codestory

Die Anleitung zu Oracle APEX Dynamic Action

  1. Die Vorstellung
  2. Das Beispiel vorbereiten
  3. Zum Beispiel mit  Dynamic Action - Change
  4. Das Beispiel über Dynamic Action - Enable/Disable
  5. Das Beispiel ưber Dynamic Action - Set Values mit der Benutzung von SQL Statement
  6. Das Beispiel über Dynamic Action - Set Values mit der Benutzung von PL/SQL
  7. Das Beispiel über Dynamic Action - Button

1. Die Vorstellung

Das Dokument wird nach der Quelle von .... geschrieben
  • Oracle APEX 5

2. Das Beispiel vorbereiten

Sie sollen die Spalte BONUS in die TabelleEMP wenn sie existiert nicht:
-- Add/modify columns
alter table EMP add BONUS number;
Erstellen Sie eine leere Seite (blank page) mit der Code 300.
Erstellen Sie eine Region , die die Parameter enthaltet
  • !
Die Information für den neu erstellten Item eingeben:
Identification:
  • Name: P300_PARAM_EMPNO
  • Type: Select List

List of Values:
  • Type: SQL Query
  • SQL Query: Select Ename, Empno From Emp
Erstellen Sie eine andere Region
Geben Sie ein
Identification:
  • Title: Emp Form Region
  • Type: Static Content
Erstellen Sie einige Item für diese Region
Die Attribute für Item setzen
No
Item
Label
Source
(Type= Database Column)
1
P300_EMPNO
Empno
EMPNO
2
P300_ENAME
Ename
ENAME
3
P300_JOB
Job
JOB
4
P300_MGR
Manager
MGR
5
P300_HIREDATE
Hiredate
HIREDATE
6
P300_SAL
Salary
SAL
7
P300_COMM
Commission
COMM
8
P300_BONUS
Bonus
BONUS
9
P300_DEPTNO
Deptno
DEPTNO
Bevor die Webseite gerendert wird (rendering), brauchen die Daten in Item zugewiesen werden. Sie sollen ein Prozess in Pre-Rendering/After Header erstellen um das zu tun
Geben Sie ein
Identification:
  • Name: Fetch EMP Row
  • Type: Automatic Row Fetch

Setting:
  • Table Name: EMP
  • Primary Key Column: EMPNO
  • Primary Key Item: P300_EMPNO

P300_EMPNO wird die Wert vom außen getragen, Process "Fetch EMP Row" wird die Tabelle EMP mit EMPNO = :P300_EMPNO abfragen bei der Zeitpunkt bevor die Seite gerendert wird (rendering) und die Wert in Item zuweisen

Wenn Sie die Seite laufen, hat sie keine Grundsdaten :P300_EMPNO hat die null Wert (keine Wert vom außen zuweisen).
Die Item ändern
P300_JOB
Identification:
  • Name: P300_JOB
  • Type: Select List
List of Values:
  • Type: Static Values
  • Static values: STATIC:CLERK;CLERK,SALESMAN;SALESMAN,PRESIDENT;PRESIDENT,MANAGER;MANAGER,ANALYST;ANALYST
P300_MGR:
Identification
  • Name: P300_MGR
  • Type: Select List

List of Values
  • Type: SQL Query
  • SQL Query: Select ename d, empno r from emp where job in ('MANAGER', 'PRESIDENT')
P300_HIREDATE
Identification
  • Name: P300_HIREDATE
  • Type: Date Picker
P300_DEPTNO
Identification
  • Name: P300_DEPTNO
  • Type: Select List
List of Values
  • Type: SQL Query
  • SQL Query: Select Dname,Deptno From Dept
die Webseite laufen

3. Zum Beispiel mit  Dynamic Action - Change

Erstellen Sie ein Dynamic Action für item P300_PARAM_EMPNO, Wenn Sie die Wert von P300_PARAM_EMPNO ändern, wird Dynamic Action die Website übermitteln (submit)
Dynamic Action wird erstellt
Identification
  • Name: Change EMPNO Param
When
  • Even: Change
  • Selection Type: Item(s)
Wenn die Bedingungen vom "Dynamic Action" den Satz im "TRUE" befriedigen, wird es implementiert, umgekehrt den Satz "FALSE" implementiert.
Erstellen Sie ein Branch (der Zweig), um nach Submit zu einer Seite weiterzuleiten (in diesem Fall ist es die aktuelle Seite).
Nach dem Submit wird die Anforderung nach der Seite mit der Code 300 (Ihre aktuelle Seite) weitergeleitet, gleichzeitig setzt es die Wert für :P300_EMPNO durch :P300_PARAM_EMPNO
Save und Ihre Website wieder laufen
Der Operationsgrundsatz

4. Das Beispiel über Dynamic Action - Enable/Disable

Außer des Gehalt bekommen die Verkaufspersonal die Kommission (commission). Deshalb bei der Änderung des Name der Arbeit (JOB) eines Mitarbeiter, wenn JOB = 'SALESMAN' ist, muss Item COMM anschalten zu typen(enable), umgekehrt sollen Sie item COMM ausschalten (disable)

Erstellen Sie ein Dynamic Action für item JOB:
Der Name vom neu erstellten Dynamic Action wird "Change JOB" gestellt
Identification
  • Name: Change JOB

When
  • Even: Change
  • Select Type: Item(s)
  • Item(s): P300_JOB
  • Condition: equal to
  • Value: SALES
Wenn P300_JOB = 'SALESMAN' behandeln
Umgekehrt wenn P300_JOB = 'SALESMAN' nicht ist, wirdder Satz im FALSE implementiert
Ihre Website wieder laufen

5. Das Beispiel ưber Dynamic Action - Set Values mit der Benutzung von SQL Statement

2 item erstellen:
Identification:
  • Name: P300_LOCATION
  • Type: Display Only
Label
  • Label: Location
Settings:
  • Save Sesion State: NO
Source
  • Type: Null
Identification:
  • Name: P300_NUM_EMPLOYEES
  • Type: Display Only
Label
  • Label: Location
Settings:
  • Save Sesion State: NO
Source
  • Type: Null

Beachten Sie: 2 item P300_LOCATION, und P300_NUM_EMPLOYEES sind die Item, deren Wert nach der Spalte in der Tabelle nicht kalkuliert werden, sondern bei der Zeitpunkt von "Page Load" deshalb sollen Sie "Save Session State = NO" setzen.

Erstellen Sie Dynamic Action für P300_DEPTNO. Wenn Sie die Abteilung vom Mitarbeiter ändern, wird Dynamic Action die Stelle und die Anzahl der Mitarbeiter der neuen Abteilung kalkulieren und die Wert für 2 items P300_LOCATION und P300_NUM_EMPLOYEES zuweisen
Das ist der Befehl SQL zur Abfrage der Position (location) und der Anzahl der Mitarbeiter in der neuen Abteilung
Select d.Loc Location
      ,Count(e.Empno) Num_Employees
From   Dept d
      ,Emp  e
Where  d.Deptno = e.Deptno(+)
And    d.Deptno = :P300_Deptno
Group  By d.Loc
Identification
  • Action: Set Value
Settings
  • Set type: SQL Statement
  • SQL Statement: .....
  • Page Items to Submit: P300_DEPTNO
Affected Elements
  • Selection Type: Item(s)
  • Item(s): P300_LOCATION, P300_NUM_EMPLOYEES
Ihre Website wieder laufen

6. Das Beispiel über Dynamic Action - Set Values mit der Benutzung von PL/SQL

Im Beispiel über die Kalkulation des Bonus für die Mitarbeiter wird der Bonus durch die Multiplikation des Bonuskoefficient mit dem Gehalt vom Mitarbeiter kalkuliert. Wenn der Website geladet wird, wird die Wert von Item BONUS durch PL/SQL kalkuliert
Erstellen Sie ein Dynamic Action, das bei dem Page-Load läuft
  • !
Den Bonus kalkulieren
Declare
   v_Multiplier Number;
Begin
   -- Determine multiplier based on job.
   Case :P300_Job
      When 'CLERK' Then
         v_Multiplier := 0.1;
      When 'ANALYST' Then
         v_Multiplier := 0.2;
      When 'SALESMAN' Then
         v_Multiplier := 0.3;
      When 'MANAGER' Then
         v_Multiplier := 0.4;
      When 'PRESIDENT' Then
         v_Multiplier := 0.5;
      Else
         v_Multiplier := 0;
   End Case;
   -- Return bonus which is calculated by
   -- Multiplying Salary My Multiplier
   Return :P300_Sal * v_Multiplier;
End;
Ihre Website wieder laufen

7. Das Beispiel über Dynamic Action - Button

Im Beispiel erstellen Sie ein Dynamic Action für Button. Wenn der Button geklickt wird, werden die Änderungen in Form gespeichert. Gleichzeitig wird der Button ausgeschaltet (disable) während die Seite aufgefrischt wird (refresh).
Identification:
  • Button Name: APPLY_CHANGE
  • Type: Apply change
Behavior:
  • Action: Submit Page
  • Database Action: SQL UPDATE action
Erstellen Sie Process um die update der Daten zu verarbeiten
Identification:
  • Name: Process ROW of EMP
  • Type: Automatic ROW Processing (DML)
Settings
  • Table Name: EMP
  • Primary Key Column: EMPNO
  • Primary Key Item: P300_EMPNO
  • Supported Operation: Update
  • TODO