Table des matières
Le Tutoriel de Oracle APEX Dynamic Action
View more Tutorials:
Ce document est basé sur :
-
Oracle APEX 5
Vous devez ajouter la colonne BONUS au tableau EMP si elle n'existe pas encore :
-- Add/modify columns alter table EMP add BONUS number;
Créez une page vierge (blank page) avec le numéro de page est 300.



Créez une Region qui comprend les paramètres.

- !


Saisissez des propriétés pour Item qui vient d'être créé:
Identification:
List of Values:
- Name: P300_PARAM_EMPNO
- Type: Select List
List of Values:
- Type: SQL Query
- SQL Query: Select Ename, Empno From Emp

Ensuite, créez une autre Region.

Saisissez :
Identification:
- Title: Emp Form Region
- Type: Static Content

Créez quelques Item pour cette Region.


Définissez les propriétés pour Item:
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 |

Avant que le site ne soit rendu (rendering) les données doivent être affectées à l'élément, vous devez créer un Process dans Pre-Rendering/After Header pour cela.


Saisissez :
Identification:
Setting:
- Name: Fetch EMP Row
- Type: Automatic Row Fetch
Setting:
- Table Name: EMP
- Primary Key Column: EMPNO
- Primary Key Item: P300_EMPNO

La valeur de P300_EMPNO est passée de l'extérieur, Process "Fetch EMP Row" requêtera le tableau EMP avec EMPNO = :P300_EMPNO à la fois avant que la page soit rendue et affecte des valeurs aux autres éléments.
Lorsque vous exécutez cette page, elle n'a pas de données, les causes sont :P300_EMPNO dont la valeur est null (aucune valeur transmise de l'extérieur).

Changez les propriétés de Item qui sont affichés.
P300_JOB
Identification:
- Name: P300_JOB
- Type: Select List
- Type: Static Values
- Static values: STATIC:CLERK;CLERK,SALESMAN;SALESMAN,PRESIDENT;PRESIDENT,MANAGER;MANAGER,ANALYST;ANALYST

P300_MGR:
Identification
List of Values
- 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
- Type: SQL Query
- SQL Query: Select Dname,Deptno From Dept

Exécution de la page web:

Créez une nouvelle Dynamic Action du item P300_PARAM_EMPNO, lorsque vous changez la valeur de P300_PARAM_EMPNO, cette Dynamic Action va submit la page web.

Dynamic Action est créée :

Identification
- Name: Change EMPNO Param
- Even: Change
- Selection Type: Item(s)

Quand les conditions de "Dynamic Action" sont vraie dont la clause "TRUE" sera exécutée, sinon, la clause "FALSE" sera exécutée.

Créez une Branch (une branche), de sorte que la demande de Submit sera transmise à une page spécifique (dans ce cas est la page en cours).


Après Submit, la demande sera redirigée vers la page numéro 300 (votre page actuelle), et définira les valeurs pour :P300_EMPNO par :P300_PARAM_EMPNO


Save et reexécutez votre page web.


La principe d'opération:

Avec le personnel de vente, en plus du salaire, ils recevront une commission (commission), donc quand vous changez de nom d'emploi (JOB) d'un employé, si JOB = 'SALESMAN', l'élément COMM permet d'entrer (Activer), sinon vous avez besoin pour désactiver l'élément COMM.
Création d'une Dynamic Action pour l'élément JOB:
Création d'une Dynamic Action pour l'élément JOB:

Nommez la nouvelle Dynamic Action que vous venez créer est "Change JOB".
Identification
When
- Name: Change JOB
When
- Even: Change
- Select Type: Item(s)
- Item(s): P300_JOB
- Condition: equal to
- Value: SALES

Gérez lorsque P300_JOB = 'SALESMAN':

Sinon, P300_JOB n'est pas égal à 'SALESMAN', la clause dans FALSE sera exécutée.


Réexécutez votre page web:


Créez 2 item:


Identification:
- Name: P300_LOCATION
- Type: Display Only
- Label: Location
- Save Sesion State: NO
- Type: Null

Identification:
- Name: P300_NUM_EMPLOYEES
- Type: Display Only
- Label: Location
- Save Sesion State: NO
- Type: Null

Remarque: 2 item P300_LOCATION, et P300_NUM_EMPLOYEES sont des éléments qui ne se base pas sur le tableau, ses valeurs sont calculées au moment "Page Load" donc vous devez installer "Save Session State = NO".
Créez Dynamic Action pour P300_DEPTNO, lorsque vous changez le département de l'employé, cette Dynamic Action va recalculer la position et le nombre des employés de ce nouveau département et attribuer des valeurs aux 2 éléments P300_LOCATION et P300_NUM_EMPLOYEES.


Celle-ci est l'instruction de requête SQL qui requête la position (location) et le nombre des employés dans le nouveau département :
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
- Set type: SQL Statement
- SQL Statement: .....
- Page Items to Submit: P300_DEPTNO
- Selection Type: Item(s)
- Item(s): P300_LOCATION, P300_NUM_EMPLOYEES

Réexécutez votre page web :


Dans cet exemple, en simulant le calcul du bonus pour un salarié, le bonus (BONUS) est calculé en multipliant le salaire par le coefficient de bonus des employés, lorsque "page load", la valeur de BONUS sera calculée par le PL/SQL.



La création d'une Dynamic Action s'exécute à l'heure du chargement de la page (Page load).

- !

Calculer le bonus :
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;

Réexécutez votre page :

Dans cet exemple, vous créerez une Dynamic Action pour le Button. Lorsque vous cliquez sur ce bouton, toutes les modifications apportées au formulaire sont enregistrées. Ce bouton est également désactivé (disabled) pendant l'actualisation (refresh) de la page.

Identification:
- Button Name: APPLY_CHANGE
- Type: Apply change
- Action: Submit Page
- Database Action: SQL UPDATE action

Créez Proccess pour update des données.


Identification:
- Name: Process ROW of EMP
- Type: Automatic ROW Processing (DML)
- Table Name: EMP
- Primary Key Column: EMPNO
- Primary Key Item: P300_EMPNO
- Supported Operation: Update

-
TODO