このトピックでは、データ・アクセス・イベント・ハンドラーをコーディングする際に使用する、EGL の外部型について概説します。 背景情報については、『EGL BIRT レポート』、『EGL BIRT ハンドラー』、および『BIRT データ・アクセス・イベント・ハンドラー』を参照してください。
ColumnMetaData 型の変数には、データ・セットにある各列の型および名前の情報が入ります。 このような変数は、DataSetInstance 型の変数を使用する場合、および getColumnMetaData 関数を呼び出す場合に受け取ります。
element.getColumnCount() returns (INT)
element.getColumnName( index INT in ) returns (STRING)
element.getColumnDisplayName( index INT in ) returns (STRING)
この EGL 関数と関連付けられている Java™ メソッドは、getColumnLabel です。
element.getColumnAlias( index INT in ) returns (STRING)
element.getColumnTypeName( index INT in )returns (STRING)
第 1 列は数字 0 ではなく 1 です。
element.getColumnNativeTypeName( index INT in )returns (STRING)
第 1 列は数字 0 ではなく 1 です。
row["firstName"] + " " + row["lastName"]
データ・セットの算出列は、「データ・エクスプローラー」ビューでの作業中に定義します。
element.isComputedColumn(index INT in) returns (BOOLEAN)
element.getName()returns (STRING)
element.getExtensionID()returns (STRING)
element.getExtensionProperty(propertyName STRING in) returns (STRING)
element.setExtensionProperty
(propertyName STRING in, value STRING in)
element.getDataSource () returns (DataSourceInstance)
element.getColumnMetaData () returns (ColumnMetaData)
function setQuery( d DataSetInstance, c ReportContext )
{ eventType = beforeOpen, elementName = "dataSet" }
queryStr string;
if( region == "EUR" )
queryStr = "select region, country, city from locations
where region = ¥"EUROPE¥"";
else
queryStr = "select region, country, city from locations
where region = ¥"ASIA¥"";
end
d.queryText = queryStr;
end
この例の場合、イベント・ハンドラーは、ビジネスの状態に応じて何らかの SQL 照会ストリングを設定します。 region 変数は、この関数の外部でグローバルに宣言および設定されているものとします。
package EGLDataSources;
program arrayProg type BasicProgram {}
function main()
arr customer[0];
cust customer;
cust.customerNumber = 102;
cust.firstName = "Jonathan";
cust.lastName = "Swift";
arr.appendElement(cust);
cust.customerNumber = 103;
cust.firstName = "Mark";
cust.lastName = "Twain";
arr.appendElement(cust);
designFile string = "eglDataSourcesRpt.rptdesign";
rptFile string = "eglDataSourcesArrayRpt.pdf";
myHandler arrayHandler = new arrayHandler;
rpt BIRTReport = new BIRTReport
(designFile, null, rptFile, "pdf", myHandler);
myHandler.setCustomerArray(arr);
rpt.createReportFromDesign();
end
end
record customer type basicrecord
customerNumber int;
firstName string;
lastName string;
end
package EGLDataSources;
Handler arrayHandler type BIRTHandler
index int;
customerArr customer[];
function setCustomerArray(a customer[])
customerArr = a;
end
function openFunction( d DataSetInstance )
{ eventType = openEvent, elementName = "myDataSet" }
index = 0;
end
function fetchFunction(d DataSetInstance, row UpdatableDataSetRow )
returns( boolean )
{ eventType = fetchEvent, elementName = "myDataSet" }
index = index + 1;
if( index <= customerArr.getSize() )
row.setColumnValue( "customer_num", customerArr[index].customerNumber );
row.setColumnValue( "fname", customerArr[index].firstName );
row.setColumnValue( "lname", customerArr[index].lastName );
return (TRUE);
else
return (FALSE);
end
end
end
データ・セットの列名 (customer_num、fName、および lName など) は、対応する EGL フィールド名 (customerNumber、firstName、および lastName など) と異なる場合があることに注意してください。
その他の詳細については、DataSetRow および UpdatableDataSetRow に関するセクションを参照してください。
element.getDataSet()returns (DataSetInstance)
element.getColumnValue(index INT in)returns (ANY)
第 1 列は数字 0 ではなく 1 です。
element.getColumnValue(columnName STRING in) returns (ANY)
これらの関数は、UpdatableDataSetRow 型の変数でも使用できます。
element.getName()returns (STRING)
element.getExtensionID()returns (STRING)
element.getExtensionProperty(propertyName STRING in) returns (STRING)
element.setExtensionProperty
(propertyName STRING in, value STRING in)
DataSourceInstance 型のパラメーターを使用すると、BIRT レポート・エンジンがリレーショナル・データベースに接続する際に使用するユーザー ID およびパスワードを設定することができます。 サンプル・コードを以下に示します。userName および password はグローバル変数で、この関数の外部で設定されているものとします。
function setUser( d DataSourceInstance, c ReportContext )
{ eventType = beforeOpen, elementName = "myDataSource" }
d.setExtensionProperty( "odaUser", userName );
d.setExtensionProperty( "odaPassword", password );
end
reportContext.setParameterValue
( parameterName STRING in, parameterValue ANY in )
reportContext.getParameterValue
( parameterName STRING in) returns (ANY)
UpdatableDataSetRow 型の変数は、レポート・エンジンにデータの行を提供します。 この変数では、DataSetRow に関して説明されているすべての関数を使用できます。
element.setColumnValue(index INT in, value ANY in)
第 1 列は数字 0 ではなく 1 です。
element.setColumnValue(columnName STRING in, value ANY in)