In diesem Abschnitt werden die externen EGL-Typen beschrieben, die Sie bei der Codierung eines Ereignishandlers für den Datenzugriff verwenden. Hintergrundinformationen finden Sie in den Abschnitten 'EGL-BIRT-Berichte', 'BIRT-Handler' und 'BIRT-Ereignishandler für den Datenzugriff'.
Eine Variable des Typs ColumnMetaData enthält Informationen zum Namen und Typ jeder Spalte im Dataset. Sie erhalten eine solche Variable, wenn Sie mit einer Variablen des Typs DataSetInstance arbeiten und die Funktion getColumnMetaData aufrufen.
element.getColumnCount() returns (INT)
element.getColumnName( index INT in ) returns (STRING)
element.getColumnDisplayName( index INT in ) returns (STRING)
Die Java™-Methode, die dieser EGL-Funktion zugeordnet ist, lautet 'getColumnLabel'.
element.getColumnAlias( index INT in ) returns (STRING)
element.getColumnTypeName( index INT in )returns (STRING)
Die erste Spalte weist die Nummer 1 auf, nicht 0.
element.getColumnNativeTypeName( index INT in )returns (STRING)
Die erste Spalte weist die Nummer 1 auf, nicht 0.
row["firstName"] + " " + row["lastName"]
Sie definieren eine berechnete Spalte für ein Dataset, wenn Sie in der Datenexploreransicht arbeiten.
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
In diesem Beispiel legt der Ereignishandler eine SQL-Abfragezeichenfolge oder eine alternative SQL-Abfragezeichenfolge als Reaktion auf eine Geschäftssituation fest. Es wird davon ausgegangen, dass die Variable region deklariert und global gesetzt ist, und zwar außerhalb der Funktion.
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
Datasetspaltennamen (wie z. B. customer_num, fName und lName) können von den entsprechenden EGL-Feldnamen (z. B. customerNumber, firstName und lastName) abweichen.
Zusätzliche Details hierzu finden Sie im Abschnitt zu 'DataSetRow' und 'UpdatableDataSetRow'.
element.getDataSet()returns (DataSetInstance)
element.getColumnValue(index INT in)returns (ANY)
Die erste Spalte weist die Nummer 1 auf, nicht 0.
element.getColumnValue(columnName STRING in) returns (ANY)
Diese Funktionen sind auch für eine Variable des Typs UpdatableDataSetRow verfügbar.
element.getName()returns (STRING)
element.getExtensionID()returns (STRING)
element.getExtensionProperty(propertyName STRING in) returns (STRING)
element.setExtensionProperty
(propertyName STRING in, value STRING in)
Sie können den Parameter des Typs 'DataSourceInstance' dazu verwenden, die Benutzer-ID und das Kennwort festzulegen, die von der BIRT-Berichtsengine zum Herstellen einer Verbindung zu einer relationalen Datenbank verwendet werden. In diesem Beispielcode wird davon ausgegangen, dass es sich bei den Variablen userName und password um globale Variablen handelt, die außerhalb der Funktion definiert wurden:
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)
Eine Variable des Typs UpdatableDataSetRow stellt der Berichtsengine eine Datenzeile bereit. Die Variable kann jede der Funktionen verwenden, die im Zusammenhang mit DataSetRow beschrieben werden.
element.setColumnValue(index INT in, value ANY in)
Die erste Spalte weist die Nummer 1 auf, nicht 0.
element.setColumnValue(columnName STRING in, value ANY in)