Berichte automatisch aktualisieren
Erscheinungsmonat |
APEX-Version |
Datenbankversion |
September 2012 |
ab 4.0 |
ab 10.2 |
Einen Bericht auf einer Anwendungsseite in
regelmäßigen Abständen zu
aktualisieren, ist recht einfach: Seit APEX 4.0 muss man noch nicht einmal
JavaScript-Code dafür programmieren; mit einem einfach zu nutzenden Plugin des
APEX-Entwicklerteams setzt man das
in kürzester Zeit um. In diesem Tipp gehen wir noch etwas weiter: Für eine
Tabelle, die eine Spalte mit dem Zeitpunkt der letzten Änderung enthält, wollen
wir die zuletzt geänderten Werte hervorheben, so dass man sie leichter
erkennen kann.
Zunächst braucht es eine Tabelle, deren Inhalte im Bericht dargestellt werden sollen.
das folgende Skript erstellt sie und füllt sie mit einigen Zeilen.
Erzeugen Sie danach einen klassischen Bericht auf diese Tabelle mit folgender SQL-Abfrage.
Der Bericht sollte dann zunächst wie in Abbildung 1 aussehen.
Abbildung 1: Der erzeugte Bericht sieht zunächst so aus
Danach geht es daran, die mit den in der SQL-Abfrage verwendeten CASE-Anweisungen
berechnten Farben auch tatsächlich zu verwenden. Navigieren Sie zu den Berichtsattributen
und nehmen Sie folgende Änderungen an Ihrem Bericht vor.
- Entfernen Sie das Häkchen Anzeigen bei den Spalten ID, AEND_TEXTFARBE und
AEND_HINTERGRUND - diese sind reine Hilfsspalten.
- Setzen Sie die Formatmaske der Spalte LETZTE_AEND auf DD.MM. HH24:MI:SS.
- Navigieren Sie zu den Spaltenattributen der Spalte PREIS_AEND , dort zum
Abschnitt HTML-Ausdruck und hinterlegen Sie folgendes:
- Tragen Sie danach den folgenden Ausdruck unter HTML-Ausdruck der Spalte
PREIS ein. Setzen Sie die Formatmaske der Spalte auf 9990D00.
Abbildung 2: HTML-Ausdruck für die Darstellung der Spalte PREIS eintragen
Ändern Sie bei der Gelegenheit auch gleich die Formatmaske auf 9990D00.
Ändern Sie danach (im SQL Workshop oder mit SQL*Plus) einen der Preise um (COMMIT nicht vergessen) und starten Sie
die Berichtsseite unmittelbar danach. Der Bericht sollte dann etwa wie in Abbildung 3
aussehen.
Abbildung 3: APEX-Bericht mit hervorgehobenen letzten Änderungen
Natürlich bietet der klassische APEX Bericht noch mehr Möglichkeiten an,
die Änderungen farblich hervorzuheben - neben dem hier angesprochenden Weg
über den HTML-Ausdruck einer Berichtsspalte kann man natürlich auch mit
Berichts-Templates arbeiten und so ggfs. die ganze Zeile mit einer anderen
Hintergrundfarbe versehen werden - das soll hier aber nicht weiter vertieft werden.
Nun geht es daran, den Bericht automatisch zu aktualisieren. Das ist einerseits
mit ein paar Zeilen JavaScript möglich, andererseits gibt es seit APEX 4.0
die APEX Plugins - und für das regelmäßige Aktualisieren einer APEX-Region
lässt sich das vom APEX Entwicklerteam bereitgestellter Plugin
Timer hervorragend nutzen. Laden Sie es also aus
dem Oracle APEX Plugin Repository herunter
(Direkter Link) und importieren Sie es in Ihre Anwendung
(Gemeinsame Komponenten, Plugins, Schaltfläche Importieren).
Um den Bericht regelmäßig zu aktualisieren, müssen Sie Ihrer Anwendungsseite
nun zwei neue dynamische Aktionen hinzufügen (Abbildung 4).
Abbildung 4: Eine neue dynamische Aktion hinzufügen
Die erste dynamische Aktion dient dazu, im Browser ein Timer-Event zu setzen. Es wird
noch nicht bestimmt, was bei Ablauf des Timers passieren soll (das legt dann die zweite
dynamische Aktion fest).
- Wählen Sie eine dynamische Aktion vom Typ Advanced
- Geben Sie der dynamischen Aktion einen Namen, bspw. Timer für Berichts-Refresh setzen
- Wählen Sie Page Load als Ereignis aus der Auswahlliste aus. Eine Bedingung brauchen Sie nicht.
- Suchen Sie Timer [Plug-In] aus der Auswahlliste als Aktion aus. Stellen Sie das
Plugin so ein, dass der Timer alle 10 oder 20 Sekunden feuert (Abbildung 5).
Abbildung 5: Als dynamische Aktion wird das Plugin ausgeführt
- Als Betroffenes Element wählen Sie jetzt schon die Berichtsregion Preise aus - das
ist wichtig, denn hierüber wird der gesetzte Timer mit der Aktion, die bei
Ablauf des Timers geschehen soll, kombiniert.
Abbildung 6: Die Berichtsregion "Preise" ist das Betroffene Element
- Mit einem Klick auf die Schaltfläche Erstellen wird die dynamische Aktion schließlich
angelegt.
Danach kommt direkt die zweite dynamische Aktion - diese wird bei Ablauf des
Timers feuern und den Bericht aktualisieren.
- Wählen Sie eine dynamische Aktion vom Typ Advanced
- Geben Sie der dynamischen Aktion einen Namen, bspw. Bericht aktualisieren
- Wählen Sie Timer Expired als Ereignis aus der Auswahlliste aus (ganz unten). Eine Bedingung brauchen Sie nicht. Als Auswahltyp nehmen Sie Region und als Region den Bericht mit den Preisen (Abbildung 7).
Abbildung 7: Die zweite dynamische Aktion feuert, wenn der Timer abgelaufen ist
- Als Aktion wählen Sie Aktualisieren aus.
- Das Betroffene Element ist wiederum die Berichtsregion Preise.
- Mit einem Klick auf die Schaltfläche Erstellen wird die dynamische Aktion schließlich
angelegt.
Nun können Sie die Seite nochmals starten - der Bericht sollte sich nun alle
10 oder 20 Sekunden auffrischen (je nachdem, was Sie eingestellt haben). Anhand der Hervorhebungen sollten Sie die jüngsten, im Hintergrund (mit SQL*Plus oder dem SQL Workshop) gemachte Änderungen sofort erkennen können.
Abbildung 8: Bericht mit hervorgehobenen, kürzlich gemachten Änderungen
Nach kurzer Zeit verschwinden die Hervorhebungen.
Abbildung 9: Bericht ohne hervorgehobene, kürzlich gemachte Änderungen
Wie lange eine Zeile hervorgehoben sein soll, ist durch den Ausdruck ...
... in der SQL-Abfrage bestimmt. Wenn Sie möchten, dass die Änderungen bis zu fünf Minuten
hervorgehoben werden sollen, ändern Sie das entsprechend um ...
zurück zur Community-Seite
|