Le Tutoriel de Oracle APEX Dynamic Action
2. Préparation pour l'exemple
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:
3. Exemple avec Dynamic Action - Change
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:
4. Exemple avec Dynamic Action - Enable/Disable
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:
5. Exemple de Dynamic Action - Set Values utilisant l'instruction de requête SQL
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 :
6. Exemple de Dynamic Action - Set Values utilisant PL/SQL
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 :
7. Exemple de Dynamic Action - Button
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
Tutoriels de programmation Oracle APEX
- Qu'est-ce qu'Oracle Application Express?
- Installer Oracle Apex 5.0
- Installer Oracle REST Data Services (ORDS) pour Oracle APEX
- Le Tutoriel de Oracle APEX pour débutant (APEX 5.0)
- Le Tutoriel de Oracle APEX Tabular Form
- Le Tutoriel de Oracle APEX Master Details
- Authentification personnalisée dans Oracle APEX
- Le Tutoriel de Oracle APEX Dynamic Action
- Créer une région de contenu dynamique dans Oracle APEX (PL/SQL Dynamic Content)
- Qu'est-ce que Business Intelligence?
- Installer Oracle BI 11g
Show More