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:
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.
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
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.
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".
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/QZRCSRVSBefindet 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.
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.
| 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 |
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.