Translate

Freitag, 10. März 2017

APEX 5 - Dynamic Action - Refresh Classic Report

Für APEX 4 und die ersten Gehversuche von Dynamic Actions gibt es ja eine Vielzahl an How Tos und Documentation... - aber bei APEX 5 wurde ich nicht so richtig fündig und einiges sieht doch jetzt anders aus - speziell mit dem neuen UI Developer Designer.

Edited 13.5.2017 - Sehr hilfreich finde ich diesen Tipp (Grafik),den ich bei meinen Recherchen fand (Source kommt später..- sorry):

Dynamic Actions funktionieren immer in 3 Schritten:




Die Aufgabe/Frage: 
Wie definiere ich eine Dynamic Action (DA) für eine SelectList, damit ein Classic Report "refreshed"...?!




(Anmerkung: ich weiß, ich kann auch eine SelectList mit Page Action "Submit Page" definieren - aber DA finde ich smarter und cooler, zumal nicht die ganze Region "zuckt" und neu geladen wird...)

Es geht natürlich los mit einem Classic Report und einem SQL Query:

Schritt 01: (in unserem Beispiel: Seite 4)

select 
 id
, name
, bemerkungen
  from table 
    where id =:P4_BRANCHE

Unter dem SQL-Query (rechts) bei "Page-Items to submit" muß "P4_BRANCHE" ausgewählt bzw. eingetragen sein, sonst "funzt" es nicht...

Schritt 02:

Wir legen ein Item vom Typ  SelectList an und nennen ihn P4_BRANCHE mit einer LOV vom
Typ SQL-Query: 

select name as d, id as r from table order by id


Schritt 03:

Wir selektieren P4_BRANCHE und mit rechter Maustaste bekommen wir das Kontextmenü:


































Wir klicken: "Create Dynamic Action" - rechts bei "Identifikation" nennen "NEW" um in: "Report_Refresh".
Die "When" Parameter sollten dann so aussehen:



















Dieser Typ DA ist automatisch vom Typ "TRUE"





















Schritt 04:

Wir klicken links bei der DA unter TRUE auf "Show": 










Und gehen wieder rechts ins "Detail-Pane" - und 
ändern die vorbelegte Action von SHOW auf REFRESH.

Bei "Affected Elements"  wird "Region" ausgewählt (worin unser Report liegt)
und der Name des Reports: "Branchen-Report"

Bei "Event" verweisen wir auf den oben angelegt Event: "Report_Refresh" und 
"Fire when Event result" :True (sollte default-mäßig auf "True" stehen).

Dann noch: "Fire on Initialisation:" ->  "Yes"
Fertig sieht es dann so aus:





Mal speichern..... (;-) und testen....

Ergebnis: