Mit der IBM i-Webkomponente "Tabelle" auf Datenbanksätze zugreifen

Mit der IBM i-Webkomponente "Tabelle" können Datenbanksätze ähnlich wie in einer Subdatei auf dem Host angezeigt werden.

Um Datenbanksätze in einer IBM i-Webkomponente "Tabelle" anzuzeigen, müssen Sie Folgendes ausführen:

Den Namen des von der Tabelle aufgerufenen Serviceprogramms angeben

Beim Erstellen einer IBM i-Webkomponente "Tabelle" in Ihrer JSP-Datei ist eines der von Ihnen definierten Attribute der Name des Serviceprogramms, das die Tabelle aufruft. Um den Namen und die Position des Serviceprogramms auf dem Host anzugeben, müssen Sie zunächst das Markierungsfeld Daten aus einem IBM i-Serviceprogramm abrufen (auf der Registerkarte Parameter in der Attributsicht) auswählen. Dadurch werden die Felder Bibliothek und Objekt aktiviert, in denen Sie den Namen der Bibliothek, in der sich das Serviceprogramm befindet, bzw. den Namen des Serviceprogramms angeben.

Den Auswahlmodus für die auf der JSP-Seite angezeigten Sätze angeben

Wenn Sie die IBM i-Webkomponente "Tabelle" erstellen, geben Sie den Auswahlmodus Keine, Einzel oder Mehrfach an. Wenn Sie Keine angeben, können die angezeigten Subdateidaten nicht ausgewählt werden. Wenn Sie Einzel angeben, erscheint ein Radioknopf neben jedem Subdateisatz, mit dem ein einzelner Satz ausgewählt werden kann. Wenn Sie Mehrfach angeben, erscheint ein Markierungsfeld neben jedem Subdateisatz, mit dem mehrere Sätze ausgewählt werden können. Um den ausgewählten Satz zu bestimmen, erstellen Sie eine Webinteraktion mit der Subdateiseite als Eingabeseite. In der Prozedur, die für diese Interaktion definiert wird, codieren Sie einen Aufruf der API QdtsReadcSF. Diese API gibt die relative Satznummer des ausgewählten Satzes oder 0 zurück, wenn kein Satz ausgewählt ist. Beispiel:

DGetRec   B	
D  info                               likeDS(rec)
 *
C            Eval rc = QdtsReadcSF(SFLName: %Addr(Rec): %Size(Rec): 1)
C            If      rc > 0
C            Eval    info.name = SFLName
 *.. process record
C            Else
 * .. no record selected

Codespezifische Prozeduren im Serviceprogramm für die Interaktion mit Subdatei-APIs

Die IBM i-Webkomponente "Tabelle" verwendet folgende Prozeduren in dem Serviceprogramm, das sie aufruft. Beachten Sie, dass bei den Prozedurnamen die Groß-/Kleinschreibung zu berücksichtigen ist.

INIT
Diese Prozedur wird aufgerufen, wenn die JSP-Seite mit der IBM i-Webkomponente "Tabelle" zum ersten Mal angezeigt wird. An diese Prozedur werden zwei Parameter übergeben: Der Tabellenname und die in den Parametern in der Sicht "Attribute für die Webkomponente Tabelle" definierten Parameter. Sie könnten diese Prozedur verwenden, um die Tabelle anfänglich mit allen Sätzen oder einer Seite mit Sätzen zu füllen.
PGUP
Diese Prozedur wird aufgerufen, wenn der Benutzer den der Tabelle zugeordneten Knopf zum Zurückblättern drückt, um die vorherige Seite mit Sätzen anzuzeigen. Sind im Benutzeradressbereich vorherige Sätze vorhanden, wird diese Prozedur nicht aufgerufen und die Tabelle zeigt automatisch die vorherige Seite an.
PGDN
Diese Prozedur wird aufgerufen, wenn der Benutzer den der Tabelle zugeordneten Knopf zum Vorblättern drückt, um die nächste Seite mit Sätzen anzuzeigen. Ist im Benutzeradressbereich die nächste Seite mit Sätzen vorhanden, wird diese Prozedur nicht aufgerufen und die Tabelle zeigt automatisch die nächste Seite an.
CLUP
Diese Prozedur wird aufgerufen, wenn die Sitzung endet. Mit dieser Prozedur können Sie alle Bereinigungsoperationen, wie z. B. geöffnete Dateien schließen, ausführen.

Die IBM i-Webkomponente "Tabelle" übergibt zwei Parameter an jede Prozedur. Der erste Parameter ist eine Zeichenfolge mit einer Länge von 10 Zeichen, die den Namen der IBM i-Webkomponente "Tabelle" angibt. Der zweite Parameter ist eine optionale Zeichenfolge, die einer Datenstruktur entspricht. Sie definieren die Felder dieser Struktur im Abschnitt mit den Serviceprogrammparametern in Webkomponente "Tabelle".

Debug für Subdatei ausführen

Es ist wichtig, dass Länge und Art der in der Tabellenattributsicht definierten Spalten exakt der Länge und Art der Felder entsprechen, die in der Subdateisatzstruktur in Ihrem Programm definiert sind, und dass sie die korrekte Reihenfolge haben. Bei einer Diskrepanz wird die Subdatei nicht korrekt angezeigt. Wenn Sie überprüfen wollen, was das Subdateiobjekt *USRSPC in der Bibliothek QTEMP enthält, können Sie hierfür den Befehl DMPSYSOBJ verwenden. Vorher muss jedoch mindestens eine Interaktion ausgeführt werden, um einen Job auf dem IBM i-Server zu erstellen. Suchen Sie an der Konsole in der Rational-Testumgebung nach einer Zeile wie der folgenden, um den qualifizierten Jobnamen zu erhalten:

IBM i host job id [964666/QUSER/QZRCSRVS]
Versetzen Sie auf einer IBM i-Befehlszeile diesen Job mit dem Befehl STRSRVJOB in den Servicemodus:
STRSRVJOB 964666/QUSER/QZRCSRVS
Befindet sich der Job im Servicemodus, erstellen Sie mit dem Befehl DMPSYSOBJ einen Speicherauszug des Speicherbereichsinhalts in einer Spooldatei:
DMPSYSOBJ OBJ(ITEMLIST) CONTEXT(QTEMP) OBJTYPE(*USRSPC)
Verwenden Sie den Befehl WRKSPLF, und zeigen Sie Spooldatei QPSRVDMP an. Sie sehen den Speicherbereichsinhalt in einem Speicherauszugsformat.

Mit Hilfe entsprechender Subdatei-APIs die in der Tabelle anzuzeigenden Daten bearbeiten

Ihr Serviceprogramm interagiert mit der IBM i-Webkomponente "Tabelle" über Code für die Subdatei-APIs. Die Daten für eine Subdatei werden in einem Benutzeradressbereichsobjekt (Objekttyp *USRSPC) auf dem Host gespeichert. Dieser Benutzeradressbereich wird in der Bibliothek QTEMP für den aktuellen Job erstellt, der das Programm ausführt.

Subdatei-APIs in Ihrem Serviceprogramm bearbeiten die Sätze im Benutzeradressbereichsobjekt, die in der IBM i-Webkomponente "Tabelle" auf einer JSP-Seite angezeigt werden. Die Namen der Subdatei-APIs und die Operation, die jede API ausführt, werden unten beschrieben.

Tabelle 1. Subdatei-APIs - Namen und Operationen
API-Name API-Operation
QdtsAppendSF Satz hinzufügen
QdtsChainSF Verkettung zu einem Satz
QdtsClearSF Inhalt einer Subdatei löschen
QdtsCountSF Die Anzahl der Subdateisätze ausgeben
QdtsDeleteSF Subdateisatz löschen
QdtsInitSF Subdatei initialisieren
QdtsReadcSF Ausgewählten Satz lesen
QdtsSetDspAtrSF Anzeigeattribute für jede Subdateizelle definieren
QdtsSetNxtCgSF Nächsten geänderten Satz definieren
QdtsSetRcdNbrSF Aktuelle Satznummer definieren
QdtsUpdateSF Satz aktualisieren

Beziehung zwischen den Knöpfen zum Vor- und Zurückblättern in der Tabelle und den Subdatei-APIs

Wenn Sie Daten aus einem i-Serviceprogramm abrufen auf der Registerkarte Parameter in der Tabellenattributsicht auswählen, stehen die Radioknöpfe für Verhalten des Serviceprogramms zur Auswahl bereit.

Die Standardoption, Schreibt jeweils eine Seite, zeigt an, dass das Serviceprogramm den Inhalt des Benutzeradressbereichs bei den Prozeduren PGUP und PGDN löscht. Die Prozeduren INIT, PGUP und PGDN müssen im Serviceprogramm codiert werden. Diese Option gibt außerdem an, dass in der Fußzeile nur die Knöpfe zum Vor- und Zurückblättern angezeigt werden.

Die Option Schreibt eine Seite wie angefordert zeigt an, dass das Serviceprogramm den Inhalt des Benutzeradressbereichs nicht bei jeder Prozedur PGDN löscht. Für diese Option müssen die Prozeduren INIT und PGDN in dem Serviceprogramm codiert werden. In der Fußzeile werden nur die Knöpfe zum Vor- und Zurückblättern angezeigt.

Die Option Schreibt gesamte Subdatei gibt an, dass in der Tabelle eine Fußzeile angezeigt wird, die zum Blättern dient. In dieser Fußzeile werden Knöpfe zum Vor- und Zurückblättern sowie Seitenangaben in der Form "Seite x von y" angezeigt. Zum Beispiel Seite 5 von 10. Diese Option gibt außerdem an, dass - unabhängig von der Anzahl Sätze, die zum Anzeigen in der Tabelle in den Benutzeradressbereich eingelesen werden - diese Sätze alle Sätze darstellen, die in der Tabelle angezeigt werden. Für diese Option muss außerdem die Prozedur INIT im Serviceprogramm codiert werden. Die Prozeduren PGUP und PGDN sind nicht erforderlich, weil sie in diesem Fall nicht aufgerufen werden.


Feedback