|
Berichte miteinander verknüpfen - auf die andere Art
Lesen Sie in diesem Tipp, wie Sie in einem Bericht Datensätze markieren und
Ihnen daraufhin im einem zweiten Bericht Details zu diesen Sätzen angezeigt
werden. Die Details erscheinen sofort, nachdem
der Datensatz links markiert wurde. Für dieses Beispiel wurden die allseits
bekannten Tabellen EMP und DEPT herangezogen.
Abb. 1: Zwei miteinander verknüpfte Berichte als Ziel
Zunächst muss die Anwendung sich die Datensätze, die links markiert
werden, merken. Legen Sie dazu ein verstecktes (hidden) Element
an (bspw. PX_SELECTED_ITEMS).
Als nächstes legen Sie den ersten Bericht an. Beachten Sie, dass der Bericht
eine zusätzliche Spalte zur Darstellung der Checkbox
benötigt. Nehmen Sie am besten einen SQL Bericht
und hinterlegen Sie als Abfrage:
Die Funktion HTMLDB_ITEM.CHECKBOX erzeugt,
wie der Name bereits nahelegt, eine HTML Checkbox.
Dabei haben die Parameter im einzelnen folgende Bedeutung:
-
Unter der Nummer 1 kann der Inhalt der
Checkbox (die angeklickten Werte) später angesprochen werden. Dazu wird die
Variable HTMLDB_APPLICATION.G_F01 verwendet. Bei
einer 2 würden Sie die Variable
HTMLDB_APPLICATION.G_F02 verwenden. Sie können
Werte zwischen 1 und 50 verwenden.
-
Wenn eine Checkbox angeklickt wird, wird als Wert für die jeweilige Zeile
die EMPNO übergeben.
-
Das HTML-Attribut onClick sorgt dafür,
dass die beiden Berichte nach jedem Klick sofort synchronisiert werden.
-
Beim Aufbau des Berichts sollen die Checkboxes anhand des Elements
PX_SELECTED_ITEMS vorbelegt werden. Dieses
Element haben Sie soeben angelegt. Dadurch "merkt" sich die Anwendung Ihre
getätigten Klicks.
-
Im Element PX_SELECTED_ITEMS sind die
einzelnen Werte durch Doppelpunkte voneinander getrennt. Warum das so ist,
lesen Sie im weiteren Verlauf dieses Artikels.
Abb. 2: Der erste Bericht mit den HTML Check Boxes
Fügen Sie nun noch eine Verzweigung (Page branch)
auf die gleiche Seite hinzu. Diese Verzweigung soll an keine Bedingung geknüpft
sein.
Wenn Sie nun bereits Datensätze markieren, werden Sie feststellen, dass die
Anwendung Ihre Markierungen sofort wieder "vergisst". Im nächsten Schritt sorgen
Sie dafür, dass die angeklickten Zeilen auch
wirklich im Element PX_SELECTED_ITEMS
gespeichert werden. Legen Sie dazu einen
onSubmit-Prozess an, legen Sie als
Typ PL/SQL fest, und hinterlegen Sie
folgenden Code:
Die Funktion HTMLDB_UTIL.TABLE_TO_STRING
wandelt die "Liste" der markierten Zeilen in einen String um. Die markierten
EMPNO-Werte sind dann - durch Doppelpunkte
getrennt - darin enthalten. Der String wird im Element
PX_SELECTED_ITEMS gespeichert. So "merkt"
sich die HTML DB die markierten Elemente für die Dauer der Sitzung. Nun können Sie einige Datensätze im Bericht anklicken. Nach jedem Klick
baut sich die Seite neu auf - die markierten Zeilen bleiben markiert.
Fehlt nur noch der Detail-Bericht. Dieser soll - wie der Name nahelegt - zu allen markierten Zeilen
die Details anzeigen. Auf SQL-Ebene muss daher in der WHERE-Klausel
eine IN-Bedingung verwendet werden. Legen Sie also einen neuen
SQL Bericht an. Als Abfrage hinterlegen Sie
einen kleinen PL/SQL-Block, der ein SQL-Kommando zurückliefert.
Zeile 7 setzt die Abfragebedingung für den Detailbericht zusammen. Wie bereits
beschrieben, stehen im
Element PX_SELECTED_ITEMS,
durch Doppelpunkte getrennt, die EMPNO-Werte
der markierten Zeilen. Die
REPLACE-Funktion wandelt die Doppelpunkte
in Kommata um - fertig ist die SQL-Bedingung.
Stellen Sie den Bericht fertig und starten Sie die Seite neu. Das
Ergebnis sollte nun in etwa wie folgt aussehen:
Abb. 3: Das Ergebnis
Alle Zeilen, die Sie links markieren, werden in den Bericht auf der
rechten Seite aufgenommen. Wenn der Detail-Bericht noch eine Möglichkeit zum
Excel-Download erhält, können die Nutzer der Anwendung sich Ihre Daten
auf bequemem Wege zusammenstellen.
Zurück zur Community-Seite
|