Ich habe schon oft versucht Dynamic Actions Vorlagen für APEX im Internet zu finden. Aber es gibt nur sehr wenige und viele sind nicht für den Anwendungsfall passend oder zu kompliziert. Ziel dieses Artikels ist es, einfache Dynamic Action in Oracle APEX als Vorlagen für den täglichen Hausgebrauch zur Verfügung zu stellen.
Fangen wir an...
1.Ein Item soll nach der Eingabe, sofort wieder mit dem Session State synchronisiert werden.Das bedeutet der Inhalt des Items wird sofort wieder mit der Datenbank, Tabelle wwv_flow_data synchronisiert. Das hat den Vorteil, von einem anderen Item wieder auf den Inhalt des Items über die Notation :Px_ITEM zugreifen zu können.Voraussetzungen. Ein Text Item (P1_TEXT) existiert in einer Region.
Fertig. Sobald Sie das Item ändern und verlassen, steht es sofort im Session State zur Verfügung. 2. Ein Zweites Item soll erst dann auf der Seite erscheinen, wenn das erste Item mit Inhalt gefüllt wurde:Wir brauchen dazu ein zweites Textfeld (P1_NAME).
Wenn man es noch schöner haben möchte legt man eine weitere True Bedingung fest, die den Cursor in das nächste/richtige Item setzt.
3. Sie geben im ersten Item eine Mitarbeiternummer ein und bekommen in einem anderenItem den Namen des dazugehörigen Mitarbeiters zurück:
4. Beim Klick in eine Textbox, sollen in zwei andere Textboxen neue Werte (mit/ohne Datenbankbezug) eingetragen werden.Wir brauchen dazu die Textboxen P1_TEXT, P1_NAME und P1_GEHALT
5. Modales Fenster gibt Wert an Hauptfenster zurück:Wir brauchen dazu eine normale Seite (Seite 1) mit einer Textbox (P1_TEXT)und einem Button (Modal_Fenster)
Ausserdem eine Modale Seite (Seite 2) mit einer Selectliste (P2_EMPS)und einem Button (Zurueck)
Der Button Modal_Fenster macht einen Redirect auf Seite 2Auf den Button legen wir eine Dynamic Action
6. Bei einem Doppelklick auf die Textbox P1_ENAME soll der Inhalt dieser Textboxsofort in die Datenbank zurückgeschrieben werden.
Wir brauchen dazu eine Normale Seite mit zwei Items:P1_EMPNO vom Typ HiddenP1_ENAME vom Typ Text Field
7. Textbox Eingabe in Großbuchstaben umwandeln:
In der Textbox eintragen unterAdvanced / Custom Attributes: style='text-transform:uppercase' Trotzdem muss das Item auch nach dem Verlassen in Großbuchstaben gewandelt werden!
8. Beim Klick auf ein Button sollen zwei Textfelder geleert werden:
Wir brauchen dazu:Button ("Clear")Text Feld P1_NAME und P1_TEXT
Damit das nun nicht aus Versehen ausgewählt wird, bauen wir eine Sicherheitsabfrage ein Dazu muss eine weitere True Action erzeugt werden mit einer niedrigeren Sequenz Nummer (z.B. 5)
Zum Schluß noch ein paar praktische Javascript Snippets: Abfrage mit YES/NO und dem Text "Mitarbeiter löschen?". Bei YES wird REQUEST = DELETE gesendet apex.confirm( "Mitarbeiter löschen?", 'DELETE' ); Abfrage mit YES/NO und dem Text "Mitarbeiter löschen?". Bei YES wird REQUEST = DEL gesendet und die Items P1_DEPTNO = 10 und P1_EMPNO=7788 gesetzt. apex.confirm( "Mitarbeiter löschen?", { request: "DEL", set: { "P1_DEPTNO": 10, "P1_EMPNO": 7788 }} );
Submit ausführen mit REQUEST=GO apex.submit( "GO" );
9. In einem Tabular Form soll in einer neu hinzugefügten Zeile in einer Spalte immer bereits ein Defaultwert stehen.
Gehen Sie in die Eigenschaften der gewünschten Spalte (bei uns im Beispiel DEPTNO) in den Bereich Advanced / CSS Classes und tragen dort ein:
mydeptno
Der Defaultwert soll aus einem Item stammen mit Namen :P1_DEPTNO
Legen Sie nun eine Dynamic Action auf den "ADD" Button in der Seite, der bei einem Click reagiert:
10. In einem Autocomplete Item soll ein Wert eingesetzt werden, der dazu führt das eine Select Liste sich eine neue Query ausführt mit dem Autocomplete Wert als Filter.
Legen Sie dazu ein Autocomplete Item (P1_DEPT) und eine Select Liste an (P1_EMPS)
Die Query für P1_DEPT:
Die Query für P1_EMPS:
Legen Sie nun eine Dynamic Action auf P1_DEPT:
11. Ein Zweites Item soll mit dem ersten Item synchronisiert werden:Wir brauchen dazu zwei Textfelder (P1_NAME und P1_NAME2).Rechte Maus auf P1_NAME / Create Dynamic Action
12. Automatische Erzeugung eines Primärschlüssels in einem interactiven GridSehr häufig benötigt man eine automatische Generierung eines Primary Schlüssels (Primary Keys) in einer TabelleFolgende Möglichkeiten bieten sich hier an:Tabelle hat einen Before Row Insert Trigger mit einer SequenzTabelle hat eine Identity Spalte (ab 12.1)PK wird durch APEX mit Hilfe einer Sequenz gefülltWir wollen uns den letzten Fall ansehena., Erstellen Sie einen interactiven Grid auf Ihrer Tabelle (bei uns die EMP Tabelle)b, Erstellen Sie eine Sequenz:
c, Erstellen Sie auf der Spalte EMPNO im Grid (rechte Maustaste, Create Dynamic Action) eine neue Dynamic Action
Nun passiert folgendes:Bei jeder neu eingefügten Zeile im Grid wird kurz der Spaltenschutz aufgehoben,dann wird aus der Sequenznummer eine neue Nummer in die Zeile eingetragen,danach wird die Spalte wieder gegenüber Änderungen geschützt.