Net.Data Verwaltung und Programmierung für OS/400


REPORT-Blöcke

Das Sprachkonstrukt des REPORT-Blocks dient zum Formatieren und Anzeigen der Datenausgabe eines FUNCTION-Blocks. Diese Ausgabe besteht in der Regel aus Tabellendaten, obwohl jede gültige Kombination aus HTML-Befehlen, Makrovariablenverweisen und Funktionsaufrufen angegeben werden kann. Wahlfrei kann im REPORT-Block ein Tabellenname angegeben werden. Wenn kein Tabellenname angegeben wird, verwendet Net.Data die Tabellendaten aus der ersten Ausgabetabelle in der Parameterliste des FUNCTION-Blocks. Wenn Sie keine Tabelle im FUNCTION-Block angeben, verwendet Net.Data die Standardtabellendaten.

Der REPORT-Block besteht aus drei Teilen, die jeweils wahlfrei sind:

Beispiel:

%REPORT{
<H2>Query Results</H2>
<P>Select a name for details.
<TABLE BORDER=1>
<TR><TD>Name</TD><TD>Location</TD>
   %ROW{
<TR>
<TD>
<a href="/cgi-bin/db2www/name.mac/details?name=$(V1)&location;=$(V2)">$(V1)</a></TD>
<TD>$(V2)</TD>
%}
</TABLE>
%}

Richtlinien für REPORT-Blöcke

Halten Sie die folgenden Richtlinien ein, wenn Sie REPORT-Blöcke erstellen:

Beispiel: Anpassen eines Berichts

Das folgende Beispiel zeigt, wie Sie Berichtsformate mit Hilfe spezieller Variablen und HTML-Befehle anpassen können. Es werden die Namen, Telefonnummern und Faxnummern aus der Tabelle CustomerTbl angezeigt:

%FUNCTION(DTW_SQL) custlist() {
     SELECT Name, Phone, Fax FROM CustomerTbl
   %REPORT{
<I>Phone Query Results:</I>
<BR>
=====================
<BR>
   %ROW{
   Name: <B>$(V1)</B>
<BR>
Phone: $(V2)
<BR>
Fax: $(V3)
<BR>
------------------------------
<BR>
   %}
   Total records retrieved: $(NUM_ROWS)
   %}
   %}

Der hieraus erstellte Bericht sieht im Web-Browser wie folgt aus:

Phone Query Results:
====================
Name: Doen, David
Phone: 422-245-1293
Fax: 422-245-7383
------------------------------
Name: Ramirez, Paolo
Phone: 955-768-3489
Fax: 955-768-3974
------------------------------
Name: Wu, Jianli
Phone: 525-472-1234
Fax: 525-472-1234
------------------------------
Total records retrieved: 3

Der Bericht wurde von Net.Data wie folgt generiert:

  1. Der Titel Phone Query Results: wird einmal am Anfang des Berichts ausgegeben. Dieser Text bildet zusammen mit einer Trennlinie den Kopfzeilenbereich des REPORT-Blocks.

  2. Die Werte für Name, Phone und Fax werden für jede abgerufene Zeile in die Variablen V1, V2 und V3 eingesetzt. Dieser Text bildet den Fußzeilenbereich des REPORT-Blocks.

  3. Nach jeder abgerufenen Zeile wird zur besseren Lesbarkeit eine Linie gezeichnet.

  4. Die Zeichenfolge Total records retrieved: und der Wert für NUM_ROWS werden einmal am Ende des Berichts ausgegeben. (Dieser Text bildet den Fußzeilenbereich des REPORT-Blocks.)

Mehrere REPORT-Blöcke

Sie können mehrere REPORT-Blöcke in einem einzelnen FUNCTION- oder MACRO FUNCTION-Block angeben, um mehrere Berichte mit einem Funktionsaufruf zu generieren.

In der Regel werden mehrere REPORT-Blöcke in der Sprachumgebung DTW_SQL mit einer Funktion verwendet, die eine gespeicherte Prozedur aufruft, die mehrere Ergebnismengen zurückgibt (siehe Gespeicherte Prozeduren). Mehrere REPORT-Blöcke können jedoch in jeder Sprachumgebung verwendet werden, um mehrere Berichte zu erstellen.

Zur Verwendung mehrerer REPORT-Blöcke müssen Sie eine Net.Data-Tabellenvariable in der Funktionsparameterliste übergeben. Wenn Sie mehr Tabellen in der Parameterliste übergeben als Sie REPORT-Blöcke angegeben haben und DTW_DEFAULT_REPORT = "MULTIPLE" ist, werden Standardberichte für jede Tabelle definiert, die keinem REPORT-Block zugeordnet ist. Wenn keine REPORT-Blöcke angegeben sind und DTW_DEFAULT_REPORT = "YES" ist, wird nur ein Standardbericht generiert. Beachten Sie, daß nur in der SQL-Sprachumgebung der DTW_DEFAULT_REPORT-Wert YES dem Wert MULTIPLE entspricht.

Beispiele

Die folgenden Beispiele zeigen, wie Sie mehrere REPORT-Blöcke verwenden können.

Gehen Sie wie folgt vor, um mehrere Berichte mit den Standardberichtsformaten anzuzeigen:

Beispiel 1: Sprachumgebung DTW_SQL

%define DTW_DEFAULT_REPORT = "MULTIPLE"
%function (dtw_sql) myStoredProc (OUT table1, table2) {
     CALL myproc   %}

In diesem Beispiel gibt die gespeicherte Prozedur myproc zwei Ergebnismengen zurück, die in table1 und table2 gestellt werden. Weil keine REPORT-Blöcke angegeben sind, werden Standardberichte für beide Tabellen angezeigt, zuerst für table1 und dann für table2.

Beispiel 2: Sprachumgebung DTW_REXX

%define DTW_DEFAULT_REPORT = "YES"
%function (dtw_rexx) multReport (INOUT table1, table2) {
     SAY 'Generating multiple default reports...<BR>'
%}

In diesem Beispiel werden zwei Tabellen an die REXX-Funktion multReport übergeben. Da DTW_DEFAULT_REPORT="YES" angegeben ist, zeigt Net.Data nur für die erste Tabelle einen Standardbericht an.

Beispiel 3: MACRO_FUNCTION-Block

%define DTW_DEFAULT_REPORT = "MULTIPLE"
%macro_function multReport (INOUT tablename1, tablename2) {
%}

In diesem Beispiel werden zwei Tabellen an die MACRO_FUNCTION-Funktion multReport übergeben. Net.Data zeigt wiederum Standardberichte für die zwei Tabellen in der Reihenfolge an, in der sie in der Parameterliste des MACRO FUNCTION-Blocks erscheinen: zuerst für table1 und dann für table2.

Gehen Sie wie folgt vor, um mehrere Berichte durch Angabe von REPORT-Blöcken zur Anzeigeverarbeitung anzuzeigen:

Beispiel 1: Benannte REPORT-Blöcke

%function(dtw_sql) myStoredProc (OUT table1, table2) {
     CALL  myproc

   %REPORT(table2) {
     ...
 %row {  ....   %}
     ...
   %}

   %REPORT(table1) {
     ...
 %row {  ....   %}
     ...
   %}
%}

In diesem Beispiel wurden REPORT-Blöcke für beide der in der Parameterliste des FUNCTION-Blocks angegebenen Tabellen angegeben. Die Tabellen werden in der Reihenfolge angezeigt, in der sie in den REPORT-Blöcken angegeben sind: table2 zuerst und dann table1. Durch Angabe eines Tabellennamens im REPORT-Block können Sie die Reihenfolge steuern, in der die Berichte angezeigt werden.

Beispiel 2: Nicht benannte REPORT-Blöcke

%function(dtw_sql) myStoredProc (OUT table1, table2) {
     CALL  myproc

%REPORT {
     ...
 %row {  ....   %}
     ...
   %}
%REPORT {
     ...
 %row {  ....   %}
     ...
   %}
%}

In diesem Beispiel wurden REPORT-Blöcke für beide der in der Parameterliste des FUNCTION-Blocks angegebenen Tabellen angegeben. Da keine Tabellennamen in den REPORT-Blöcken angegeben sind, werden Berichte für die zwei Tabellen in der Reihenfolge angezeigt, in der sie in der Parameterliste des FUNCTION-Blocks erscheinen: zuerst für table1 und dann für table2.

Gehen Sie wie folgt vor, um mehrere Berichte mit einer Kombination aus Standardberichten und REPORT-Blöcken anzuzeigen:

Beispiel: Eine Kombination aus Standardberichten und REPORT-Blöcken

%define DTW_DEFAULT_REPORT = "MULTIPLE"
%function(dtw_system) editTables (INOUT table1, table2, table3) {
  %EXEC{ /qsys.lib/mylib.lib/mypgm.pgm %}
  %REPORT(table2) {
    ...
 %row {  ....   %}
    ...
  %}
%}

In diesem Beispiel ist nur ein REPORT-Block angegeben. Weil er den Tabellennamen table2 angibt, wird diese Tabelle verwendet, um den Bericht anzuzeigen. Da weniger REPORT-Blöcke angegeben sind als Tabellen in der FUNCTION-Parameterliste übergeben werden, werden Standardberichte für die restlichen Tabellen in der Reihenfolge angezeigt, in der sie in der Parameterliste des FUNCTION-Blocks erscheinen: zuerst ein Standardbericht für table1 und dann ein Standardbericht für table3.

Richtlinien und Einschränkungen für mehrere REPORT-Blöcke

Beachten Sie die folgenden Richtlinien und Einschränkungen für die Angabe mehrerer REPORT-Blöcke in einem FUNCTION- oder MACRO_FUNCTION-Block.

Richtlinien:

Einschränkungen:


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]