Externe Typen in einem BIRT-Ereignishandler für den Datenzugriff
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'.
ColumnMetaData
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.
- getColumnCount gibt die Anzahl der Spalten in einer Zeile des Datasets zurück.
element.getColumnCount() returns (INT) - getColumnName gibt den Namen einer Spalte zurück, die durch eine Indexnummer
identifiziert wird.
element.getColumnName( index INT in ) returns (STRING) - getColumnDisplayName gibt den Anzeigenamen der Spalte zurück,
die durch eine Indexnummer identifiziert wird. Der BIRT Report Designer verwendet den Namen bei der Anzeige der Spalte in der Datenexploreransicht
sowie für die automatische Generierung von Spaltenüberschriften in einer Tabelle, wenn die Spalte
während des Berichtsdesignprozesses aus der Datenexploreransicht gezogen und in der Tabelle abgelegt wird.
element.getColumnDisplayName( index INT in ) returns (STRING)Die Java™-Methode, die dieser EGL-Funktion zugeordnet ist, lautet 'getColumnLabel'.
- getColumnAlias gibt den Aliasnamen einer Spalte zurück, die durch eine Indexnummer
identifiziert wird. Der Report Designer kann diesen Aliasnamen als kürzeren oder aussagekräftigeren Namen für eine Spalte verwenden,
wenn er im Berichtsdesign darauf verweist. So kann einer Spalte mit dem Namen '$FN' der Aliasname 'firstName' zugewiesen werden,
sodass in einem Ausdruck 'row["firstName"]' anstelle von 'row["$FN"]' verwendet werden kann.
element.getColumnAlias( index INT in ) returns (STRING) - getColumnTypeName gibt den Typ der Spalte zurück, die durch eine Indexnummer
identifiziert wird, die die Position der Spalte in der Zeile darstellt. Ein zurückgegebener Wert kann 'Integer', 'Double', 'Decimal', 'String', 'Date' oder 'Any' lautetn.
element.getColumnTypeName( index INT in )returns (STRING)Die erste Spalte weist die Nummer 1 auf, nicht 0.
- getColumnNativeTypeName gibt den nativen Typ der Spalte zurück, die durch eine Indexnummer
identifiziert wird, die die Position der Spalte in der Zeile darstellt. Der native Typ ist einer der gültigen Typen für die Datenquelle und abhängig von der Art der Datenquelle.
Zum Beispiel kann der native Typ für eine Flatfile 'bigdecimal', 'time', 'timestamp',
'date', 'double', 'int' oder 'string' sein. Bei einer JDBC-Datenquelle sind die unterstützten nativen Typen
abhängig vom Typ des Datenbankverwaltungssystems, auf das zugegriffen wird.
element.getColumnNativeTypeName( index INT in )returns (STRING)Die erste Spalte weist die Nummer 1 auf, nicht 0.
- isComputedColumn gibt einen booleschen Wert zurück, der angibt,
ob die Spalte berechnet und nicht aus der Datenquelle abgerufen ist. Eine berechnete Spalte enthält das Ergebnis eines Ausdrucks, in dem normalerweise
eine oder mehrere aus der Datenquelle abgerufene Spalten verwendet werden. Beispiel: Wenn jede aus der Datenquelle abgerufene Zeile Spalten mit den Namen
'firstName' und 'lastName' enthält, kann eine berechnete Spalte mit dem Namen 'fullName'
mithilfe des folgenden Ausdrucks definiert werden:
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)
DataSetInstance
- getName gibt den Namen für das Dataset zurück, der in der Designdatei angegeben ist.
element.getName()returns (STRING) - getExtensionID gibt den Wert der BIRT-ODA-Erweiterungs-ID
(ODA = Open Data Access) zurück. Für eine Datenquelle, die eine SQL-Abfrage verwendet, kann der Wert
beispielsweise 'org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet' lauten.
element.getExtensionID()returns (STRING) - getExtensionProperty gibt den Wert einer BIRT-ODA-Erweiterungseigenschaft zurück.
element.getExtensionProperty(propertyName STRING in) returns (STRING) - setExtensionProperty legt den Wert einer ODA-Erweiterungseigenschaft fest.
element.setExtensionProperty (propertyName STRING in, value STRING in) - getDataSource ruft die für das Dataset spezifische Datenquelle ab.
element.getDataSource () returns (DataSourceInstance) - getColumnMetaData ruft eine Variable des Typs 'ColumnMetaData' ab,
die Informationen zum Typ und Namen jeder Spalte im Dataset enthält. Weitere Details zur Art der verfügbar gemachten Informationen
finden Sie im Abschnitt zu getColumnMetaData.
element.getColumnMetaData () returns (ColumnMetaData)
- queryText ist ein Feld des Typs STRING, das die SQL-Abfrage enthält,
aus der die Berichtsengine ein Dataset ableitet. Wenn eine SQL-Abfrage nicht verfügbar ist, wird als Wert
für queryText eine leere Zeichenfolge zurückgegeben.Im folgenden Beispiel ruft die Berichtsengine einen Ereignishandler (für den Ereignistyp 'beforeOpen' und das Dataset 'dataSet') auf, bevor sie eine SQL-Abfrage öffnet.
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; endIn 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'.
DataSetRow
- getDataSet gibt das Dataset zurück.
element.getDataSet()returns (DataSetInstance) - getColumnValue gibt den Wert einer Spalte zurück, die durch eine Indexnummer
identifiziert wird.
element.getColumnValue(index INT in)returns (ANY)Die erste Spalte weist die Nummer 1 auf, nicht 0.
- getColumnValue gibt den Wert einer Spalte zurück, die durch einen Namen
identifiziert wird.
element.getColumnValue(columnName STRING in) returns (ANY)
Diese Funktionen sind auch für eine Variable des Typs UpdatableDataSetRow verfügbar.
DataSourceInstance
- getName gibt den Namen für die Datenquelle zurück, der in der Designdatei angegeben ist.
element.getName()returns (STRING) - getExtensionID gibt den Wert der BIRT-ODA-Erweiterungs-ID
(ODA = Open Data Access) zurück. Für eine JDBC-Datenquelle kann der Wert beispielsweise
'org.eclipse.birt.report.data.oda.jdbc' lauten.
element.getExtensionID()returns (STRING) - getExtensionProperty gibt den Wert einer BIRT-ODA-Erweiterungseigenschaft zurück,
wie zum Beispiel:
- odaDriverClass (für die Treiberklasse, die für den JDBC-Zugriff auf eine relationale Datenbank verwendet wird)
- odaUser (für die Benutzer-ID, die zum Herstellen einer Verbindung zur Datenbank verwendet wird)
- odaPassword (für das Kennwort, die zum Herstellen einer Verbindung zur Datenbank verwendet wird)
element.getExtensionProperty(propertyName STRING in) returns (STRING) - setExtensionProperty legt den Wert einer ODA-Erweiterungseigenschaft fest.
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 legt den Wert eines Berichtsparameters fest,
der anhand des Namens identifiziert wird:
reportContext.setParameterValue ( parameterName STRING in, parameterValue ANY in ) - Entsprechend ruft getParameterValue den Wert eines Berichtsparameters ab:
reportContext.getParameterValue ( parameterName STRING in) returns (ANY)
UpdatableDataSetRow
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.
- setColumnValue legt den Wert einer Spalte fest,
die durch eine Indexnummer identifiziert wird.
element.setColumnValue(index INT in, value ANY in)Die erste Spalte weist die Nummer 1 auf, nicht 0.
- setColumnValue legt den Wert einer Spalte fest, die durch einen Namen
identifiziert wird.
element.setColumnValue(columnName STRING in, value ANY in)