Le guide Oracle Forms 9i/10g
Date de publication : Juin 2005
Annexe II - Liste des déclencheurs Forms
Annexe II - Liste des déclencheurs Forms
Déclencheurs de process niveau bloc
When-Clear-Block
Se déclenche juste avant que le bloc de données soit vidé
(ne se déclenche pas lorsque Forms exécute un CLEAR-FORM)
Il peut être utilisé pour effectuer une action à chaque fois que le bloc est vidé.
niveau d'implémentation:
forme, bloc.
Commandes autorisées:
instructions SELECT, fonctions natives non restreintes
Se déclenche suite aux instructions:
CLEAR_BLOCK, COUNT_QUERY, ENTER_QUERY
When-Create-Record
Se déclenche lorsque un nouvel enregistrement est créé.
Il peut être utilisé pour initialiser certains items de l'enregistrement, ou pour refuser la création d'un enregistrement
- When-Create-Record
If Get_Block_Property( 'nom_bloc', CURRENT_RECORD ) > 3 Then
Message('Impossible de saisir plus de trois enregistrements');
Raise Form_Trigger_Failure ;
Else
- Initialisation de certains items
:NOM_BLOC.ITEM_DATE := SYSDATE ;
End if ;
niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Se déclenche suite aux instructions:
CREATE_RECORD
Valide en mode enter-query: NON
When-Database-Record
Se déclenche dès qu'un enregistrement est "marqué" pour insertion ou mise à jour.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
When-Remove-Record
Se déclenche dès qu'un enregistrement est effacé ou supprimé
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Se déclenche suite aux instructions:
CLEAR_BLOCK, DELETE_RECORD
Valide en mode enter-query: NON
Déclencheurs d'interface
When-Button-Pressed
Se déclenche dès qu'un bouton de commande est actionné.
Utilisé pour effectuer toute action liée au bouton
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
/* When-Button-Pressed */
Call_Form('ecran_suivant');
When-Checkbox-Changed
Se déclenche dès que l'état d'une case à cocher change.
Permet se savoir si l'utilisateur coche ou décoche la case
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
/* When-Checkbox-Changed
l'item est de type Varchar2(1)
valeur 'O' lorsque coché
valeur 'N' lorsque décoché
*/
If :BLOCK.ITEM = 'O' Then
- case cochée
..
Else
- case décochée
..
End if ;
When-Image-Activated
Se déclenche lorsqu'un item de type image est cliqué ou double-cliqué
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
When-List-Activated
Se déclenche lors d'un double-clic dans un item liste de type T-list
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: OUI
When-List-Changed
Se déclenche lorsque l'utilisateur sélectionne une valeur différente dans un item de type liste et également dans un item de type Combo-list lorsque l'utilisateur saisi ou modifie une valeur.
Ne se déclenche pas lorsque la valeur est modifié par programme.
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
When-Mouse-Click
Se déclenche au niveau forme lorsque l'utilisateur clique sur un canevas ou sur n'importe quel item de la forme.
Se déclenche au niveau bloc lorsque l'utilisateur clique sur n'importe quel item du bloc.
Se déclenche au niveau item sur l'item cliqué.
Trois évènements peuvent survenir avant que ce déclencheur ne soit activé:
- Mouse down
- Mouse up
- Mouse click
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
When-Mouse-DoubleClick
Identique au déclencheur When-Mouse-Click mais lors d'un double-clic
Six évènements peuvent survenir avant que ce déclencheur ne soit activé:
- Mouse down
- Mouse up
- Mouse click
- Mouse down
- Mouse up
- Mouse double-click
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
When-Mouse-Down
Identique au déclencheur When-Mouse-Click mais lors d'un appui sur le bouton de la souris
When-Mouse-Enter
Identique au déclencheur When-Mouse-Click mais lorsque le pointeur de souris se retrouve à l'intérieur d'un item
When-Mouse-Leave
Identique au déclencheur When-Mouse-Enter mais lorsque le pointeur de souris quitte l'item
When-Mouse-Move
Identique au déclencheur When-Mouse-Enter mais lorsque le pointeur de souris se déplace
When-Mouse-Up
Identique au déclencheur When-Mouse-Down mais lorsque le bouton de la souris est relâché
When-Radio-Changed
Se déclenche lorsque l'utilisateur change de bouton option ou dé-sélectionne un bouton option
(la technique de dé-sélection d'un bouton option permet d'exclure le radio-groupe en mode ENTER-QUERY)
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
When-Timer-Expired
Se déclenche dès que l'intervalle de temps du temporisateur est écoulée
Un temporisateur ne se déclenche que lorsque l'application est en attente de saisie. Il ne se déclenche donc pas pendant l'exécution d'un déclencheur, code PL/SQL, processus de transaction ni pendant la navigation dans un menu.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
When-Window-Activated
Se déclenche dès qu'une fenêtre devient le fenêtre active.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
When-Window-Closed
Se déclenche dès qu'une fenêtre est fermée
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
When-Window-Deactivated
Se déclenche dès qu'une fenêtre perd le focus.
Lors de l'ouverture d'une autre forme, ce déclencheur n'est pas immédiatement activé mais seulement lorsque le contrôle revient.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
When-Window-Resized
Se déclenche dès qu'une fenêtre est redimensionnée, soit par l'utilisateur, soit par programme avec les instructions Resize_Window ou Set Window_Property.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
Déclencheur de relation Maître-Détail
On-Check-Delete-Master
Ce déclencheur est créé automatiquement par Forms lors de la création d'une relation entre deux blocs et lorsque la propriété : Comportement d'enregistrement supprimé est différente de : Non isolée.
Se déclenche lors de la suppression d'un enregistrement dans le bloc maître.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
On-Clear-Details
Ce déclencheur est créé automatiquement par Forms lors de la création d'une relation entre deux blocs.
Se déclenche dès que l'enregistrement change dans le bloc maître.
Est utilisé pour vider tous les blocs détail de la relation avant de les ré-interroger avec la nouvelle clé de l'enregistrement maître.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: NON
On-Populate-Details
Ce déclencheur est créé automatiquement par Forms lors de la création d'une relation entre deux blocs.
Se déclenche lorsque Forms doit ré-interroger les blocs détail.
Ne se déclenche pas en cas d'absence du déclencheur On-Clear-Details.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: NON
Déclencheurs de messagerie
On-Error
Se déclenche lors d'une erreur.
Est utilisé pour "intercepter" l'erreur et remplacer le comportement standard (Forms affiche le message d'erreur dans la ligne d'état).
Pour identifier la cause de l'erreur, utiliser les variables système suivantes:
- ERROR_CODE
- ERROR_TEXT
- ERROR_TYPE (FRM pour une erreur Forms et ORA pour une erreur base)
- DBMS_ERROR_CODE
- DBMS_ERROR_TEXT
Dans la plupart des cas, il convient de placer de déclencheur au niveau forme.
Il peut être difficile d'intercepter l'erreur au niveau bloc ou item lorsque l'application est dans un processus de navigation (pendant une phase de COMMIT par exemple).
ERROR_CODE indique le code Forms de l'erreur
ERROR_TEXT indique le libellé Forms de l'erreur
ERROR_TYPE indique le type de l'erreur
DBMS_ERROR_CODE indique le code de l'erreur en base
DBMS_ERROR_TEXT indique le libellé de l'erreur en base
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: OUI
On-Message
Se déclenche lorsque Forms doit afficher un message sur la ligne d'état.
Utiliser ce déclencheur pour intercepter les messages natifs ( pour ne pas les afficher, ou afficher un autre texte).
Pour identifier le message, utiliser les variables système suivantes:
- MESSAGE_CODE (code du message)
- MESSAGE_TEXT (texte du message)
- MESSAGE_TYPE (FRM pour un message Forms, ORA pour un message base, NULL si aucun message)
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: OUI
Déclencheurs de navigation
Post-Block
Se déclenche lorsque le focus quitte le bloc.
Ne se déclenche pas lorsque l'unité de validation est fixée à : Forme
Est utilisé pour effectuer certains contrôles au niveau du bloc et éventuellement interdire sa sortie.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Form
Se déclenche lorsque l'application est quittée.
Est utilisé pour supprimer les variables globales ou afficher un dernier message à l'utilisateur.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Record
Se déclenche lorsque le focus quitte l'enregistrement et lorsque l'unité de validation est fixée à Item ou Enregistrement.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Text-Item
Se déclenche lorsque le focus qui l'item.
Ne se déclenche pas lorsque l'unité de validation est différente de Item ou Défaut.
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Pre-Block
Se déclenche lorsque le focus arrive dans un bloc et que l'unité de validation est fixée à Item, Enregistrement ou Bloc.
Peut s'utiliser pour interdire l'accès au bloc ou fixer les valeurs de variables.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Pre-Form
Se déclenche au chargement de la forme.
C'est le déclencheur idéal pour fixer toutes les propriétés utilisées ensuite dans l'application, notamment les variables globales.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Pre-Record
Se déclenche lors de l'arrivée du focus dans l'enregistrement et lorsque l'unité de validation est fixée à Item ou Enregistrement.
Peut être utiliser pour refuser la création d'un nouvel enregistrement ou régler la valeur de variables.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Pre-Text-Item
Se déclenche lorsque le focus entre dans l'item et que l'unité de validation est fixée à Item.
S'utilise pour fixer la valeur de l'item ou enregistrer sa valeur actuelle (sauvegarde ancienne valeur).
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
When-New-Block-Instance
Se déclenche lorsque le focus arrive dans un bloc.
Ne se déclenche pas dans une application multi-formes lors du passage d'une forme à une autre.
Déclencheur idéal pour fixer les propriétés du bloc (autoriser/interdire l'insertion, mise à jour, suppression, etc.).
Se déclenche toujours après le déclencheur PRE-BLOCK
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: NON
When-New-Form-Instance
Au chargement d'une forme, Forms navigue vers le premier item du premier block.
Une fois cette navigation effectuée, le déclencheur W-N-F-I s'exécute.
Ne se déclenche pas dans une application multi-formes lors du passage d'une forme à une autre.
Ce déclencheur est activé avant tout affichage et permet de fixer la plupart des opérations d'initialisation.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: NON
When-New-Item-Instance
Se déclenche lorsque le focus arrive dans l'item mais après le processus de navigation.
Le fait qu'il se déclenche en dehors de tout processus de navigation permet d'utiliser les fonctions natives restreintes (Go_Item, Go_Block, etc.).
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
When-New-Record-Instance
Se déclenche lorsque le focus arrive dans un enregistrement mais après le processus de navigation.
Le fait qu'il se déclenche en dehors de tout processus de navigation permet d'utiliser les fonctions natives restreintes (Go_Item, Go_Block, etc.).
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
Déclencheur nommé par l'utilisateur
Correspond à un déclencheur non natif créé et nommé par l'utilisateur.
Ce type de déclencheur ne répond à aucun évènement particulier et doit être appelé explicitement.
Pratique pour stocker du code devant être appelé depuis un menu. (Les unités de programme définies dans les formes ne sont pas accessible depuis un menu).
Vous commandez l'exécution d'un tel déclencheur avec l'instruction Execute_Trigger('Nom_du_declencheur').
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Toutes commandes autorisée au niveau du code ou déclencheur appelant.
Valide en mode enter-query: NON
Vous devez géré vous-même le statut du déclencheur (FORM_SUCCESS, FORM_FAILURE, FORM_FATAL) en utilisant si besoin l'instruction Raise (Forms_trigger_failure).
Déclencheurs ON-xxx
On-Check-Delete-Master
On-Check-Unique
On-Clear-Details
On-Close
Se déclenche à la fermeture d'une requête. (lorsque toutes les lignes ont été fetchées) ou que l'interrogation a été annulée.
Utilisé lorsque vous gérez vous-même l'interrogation avec ON-SELECT et ON-FETCH.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SQL, PL/SQL, fonctions natives non restreintes
Valide en mode enter-query: NON
On-Column-Security
Se déclenche lorsque la propriété du bloc : Imposer sécurité sur colonne est fixée à Oui.
Cette propriété indique à Forms qu'il doit vérifier les droits d'accès définis au niveau colonne de la table.
Si l'utilisateur n'a pas le droit UPDATE sur une colonne, Forms rend l'item non modifiable.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SQL, PL/SQL, fonctions natives non restreintes
Valide en mode enter-query: NON
On-Commit
Se déclenche en fin de processus de COMMIT lorsque les modifications (INSERT, UPDATE, DELETE) ont été effectuées en base.
Peut être utilisé en phase de test pour vérifier la bonne mise en oeuvre des insertions, mises à jour et suppressions dans les tables, mais sans le COMMIT final.
Annule et remplace le COMMIT en base.
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SQL, PL/SQL, fonctions natives non restreintes
Valide en mode enter-query: NON
/* On-Commit
on n'exécute pas le commit final
*/
Null ;
On-Count
Se déclenche après la phase de query pour afficher dans la ligne de statut le nombre d'enregistrements ramenés.
Peut être utilisé pour des accès à une base non Oracle.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, PL/SQL, fonctions natives non restreintes
Valide en mode enter-query: OUI
On-Delete
Se déclenche pendant le processus de commit sur chaque enregistrement marqué pour suppression.
Le code inséré dans ce déclencheur remplace l'action standard de suppression.
Vous devez donc programmer explicitement l'ordre de suppression.
Utilisé pour écrire explicitement l'ordre d'insertion (bloc basé sur sous-requête ou sur une vue complexe).
Pour exécuter le processus standard de suppression dans ce déclencheur, invoquez la fonction Delete_Record.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
Exemple:
Dans certaines sociétés, la charte de développement interdit toute suppression physique des données.
En lieu et place, les enregistrements sont "marqués" comme supprimés, généralement par la valorisation d'une colonne particulière (ex. : FL_SUP = 'O')
/* On-Delete
l'enregistrement n'est pas physiquement supprimé
mais seulement marqué
*/
UPDATE nom_table
SET FL_SUP = 'O'
Where ROWID = :BLOC.ROWID ;
On-Error
On-Fetch
Se déclenche immédiatement après un déclencheur On-Select et autant de fois que nécessaire jusqu'à la récupération complète de l'ensemble de lignes.
Est utilisé pour l'accès aux bases non Oracle.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, PL/SQL, fonctions natives non restreintes
Valide en mode enter-query: NON
On-Insert
Se déclenche pendant le processus de commit sur chaque enregistrement marqué pour insertion.
Le code inséré dans ce déclencheur remplace l'action standard d'insertion.
Vous devez donc programmer explicitement l'ordre d'insertion.
Utilisé pour écrire explicitement l'ordre d'insertion (bloc basé sur sous-requête ou sur une vue complexe).
Pour exécuter le processus standard d'insertion dans ce déclencheur, invoquez la fonction Insert_Record.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
Exemple:
/* On-Insert
Bloc basé sur une vue complexe
Insertion dans les tables sous-jacentes
*/
INSERT INTO nom_table1 ...
INSERT INTO nom_table2 ...
On-Lock
Se déclenche lorsque Forms doit verrouiller un enregistrement.
Soit dès la modification d'un item basé de l'enregistrement si la propriété du bloc : Mode de verrouillage est fixée à Automatique ou Immédiat, soit au moment de l'enregistrement si cette propriété est fixée à Différé.
Le code saisie dans ce déclencheur remplace le fonctionnement standard. Vous devez donc programmer explicitement le verrouillage de la ligne.
Pour exécuter le processus standard de verrouillage dans ce déclencheur, invoquez la fonction Lock_Record.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
On-Logon
Se déclenche lorsque Forms initie la procédure de connexion à la base.
Utilisé dans les cas suivants:
- Accès à une base non Oracle
- Vérification de l'utilisateur et connexion sur un autre schéma
- L'application Forms est autonome et ne nécessite aucun accès en base
(dans ce dernier cas, saisissez une unique instruction Null ; dans le corps du déclencheur).
Le code saisie dans ce déclencheur remplace le fonctionnement standard. Vous devez donc programmer explicitement la connexion.
Pour exécuter le processus standard de connexion dans ce déclencheur, invoquez la fonction Logon.
Niveau d'implémentation:
forme.
Commandes autorisées:
Fonctions natives non restreintes
Valide en mode enter-query: NON
/* On-Logon
reconnecte l'utilisateur sur un autre schéma
*/
Logon ( 'user', 'password@base' ) ;
On-Logout
Se déclenche lorsque Forms initie la procédure de déconnexion à la base.
Le code saisie dans ce déclencheur remplace le fonctionnement standard. Vous devez donc programmer explicitement la déconnexion.
Pour exécuter le processus standard de déconnexion dans ce déclencheur, invoquez la fonction Logout.
Niveau d'implémentation:
forme.
Commandes autorisées:
Fonctions natives non restreintes
Valide en mode enter-query: NON
On-Message
On-Populate-Details
On-Rollback
Se déclenche lorsque Forms doit Annuler (Rollback) une transaction jusqu'au dernier savepoint.
Le code saisie dans ce déclencheur remplace le fonctionnement standard. Vous devez donc programmer explicitement l'annulation de la transaction.
Pour exécuter le processus standard d'annulation dans ce déclencheur, invoquez la fonction Issue_Rollback.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, PL/SQL, fonctions natives non restreintes
Valide en mode enter-query: NON
On-Savepoint
Se déclenche lorsque Forms doit positionner un point de sauvegarde (savepoint).
Le code saisie dans ce déclencheur remplace le fonctionnement standard. Vous devez donc programmer explicitement le positionnement du point de sauvagarde.
Pour exécuter le processus standard dans ce déclencheur, invoquez la fonction Issue_Savepoint.
A l'intérieur de ce déclencheur vous pouvez connaître le nom du prochaine point de sauvegarde en utilisant la fonction Get_Application_Property( SAVEPOINT_NAME )
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, PL/SQL, fonctions natives non restreintes
Valide en mode enter-query: NON
se déclenche suite aux instructions:
CALL_FORM
On-Select
Se déclenche au cours de la séquence d'interrogation (Ouverture du curseur, parsing, phases d'exécution).
Utilisé pour l'accès aux bases non Oracle.
Le code saisie dans ce déclencheur remplace le fonctionnement standard. Vous devez donc programmer explicitement la gestion du curseur.
Pour exécuter le processus standard de ce déclencheur, invoquez la fonction Select_Records.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, PL/SQL, fonctions natives non restreintes
Valide en mode enter-query: NON
Se déclenche suite aux instructions :
EXECUTE_QUERY
On-Sequence-Number
Se déclenche lorsque Forms doit lire une séquence pour alimenter un item dont la valeur initiale est basé sur une séquence.
Le code saisie dans ce déclencheur remplace le fonctionnement standard. Vous devez donc programmer explicitement l'interrogation de la séquence.
Pour exécuter le processus standard de ce déclencheur, invoquez la fonction Generate_Sequence_Number.
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
On-Update
Se déclenche pendant le processus de commit sur chaque enregistrement marqué pour mise à jour.
Le code inséré dans ce déclencheur remplace l'action standard de mise à jour.
Vous devez donc programmer explicitement l'ordre de modification.
Utilisé pour écrire explicitement l'ordre UPDATE (bloc basé sur sous-requête ou sur une vue complexe).
Pour exécuter le processus standard ce déclencheur, invoquez la fonction Update_Record.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
Exemple:
/* On-Update
Bloc basé sur une vue complexe
Mise à jour des tables sous-jacentes
*/
UPDATE nom_table1 ...
UPDATE nom_table2 ...
Déclencheurs de type POST-xxx
Post-Change
Se déclenche suite à l'un des évènements suivants:
- Un item est marqué comme "modifié" et sa valeur est non NULL
- Un item est alimenté d'une valeur non NULL par retour de sélection d'une LOV
- Au cours d'une interrogation (query) l'item est alimenté avec une valeur non NULL (et dans ce cas, le déclencheur When-Validate-Item n'est pas exécuté)
Ce déclencheur reste présent pour des raisons de compatibilité avec d'anciennes versions de Forms. Il ne devrait normalement plus être utilisé.
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Database-Commit
Se déclenche après l'exécution du COMMIT en base.
Utilisé pour effectuer une action à chaque fois qu'un commit en base est effectué.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Delete
Se déclenche après que la ligne a été supprimée en base.
Peut être utilisé pour effectuer des actions complémentaires à la suppression ( insertions, mises à jours, suppression dans d'autres tables).
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Form
Se déclenche lors de la fermeture de l'application.
Utilisé pour "nettoyer" la forme (effacer les variables globales)
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Forms-Commit
Se déclenche pendant la phase d'enregistrement, après que les modifications ont été effectuées en base (INSERT, UPDATE, DELETE) mais avant le COMMIT final.
Peut être utilisé en conjonction avec le déclencheur Post-Database-Commit pour vérifier si les données sont seulement "postées" ou réellement commitées.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Insert
Se déclenche après que la ligne a été insérée en base.
Peut être utilisé pour effectuer des actions complémentaires à l'insertion ( insertions, mises à jours, suppression dans d'autres tables).
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Logon
Se déclenche suite à l'un des deux évènements suivants:
- Fin normale du processus standard de connexion
- Fin normale de l'exécution explicite du déclencheur On-Logon
Utile pour gérer toute action consécutive à la bonne connexion à la base de donnée ne devant être effectuée qu'une fois (indépendamment des processus d'initialisation des formes appelées consécutivement).
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Logout
Se déclenche suite à l'un des deux évènements suivants:
- Fin normale du processus standard de déconnexion
- Fin normale de l'exécution explicite du déclencheur On-Logout
Utile pour gérer toute action consécutive à la bonne déconnexion à la base de donnée.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Query
Se déclenche pendant la phase d'interrogation (QUERY) à chaque enregistrement ramené par la requête.
Utilisé pour alimenter la valeurs des items non basés de l'enregistrement (lookup)
Remarque : lors de l'utilisation de Post-Query pour alimenter des items non basés, le statut de l'enregistrement passe à CHANGED. Pour contourner ce fonctionnement, il faut utiliser l'instruction Set_Record_Property pour replacer le statut de l'enregistrement à QUERY.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
/* Post-Query
récupération du libellé du département
on force le statut du record à QUERY
*/
SELECT dname
INTO :EMP.LIB_DEPT
FROM DEPT
WHERE deptno = :EMP.DEPTNO ;
Set_Record_Property
(
Get_Block_Property( 'EMP', CURRENT_RECORD),
'EMP',
STATUS,
QUERY_STATUS
);
Post-Record
Se déclenche lorsque le focus quitte l'enregistrement.
Sont déclenchement s'effectuant pendant le processus de navigation, on ne peut donc pas utiliser les fonctions natives restreintes (Go_Item, Go_Block, etc.).
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Select
Se déclenche après la phase d'initialisation du query mais avant que la première ligne ne soit ramenée.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Text-Item
Se déclenche lorsque le focus quitte l'item.
Sont déclenchement s'effectuant pendant le processus de navigation, on ne peut donc pas utiliser les fonctions natives restreintes (Go_Item, Go_Block, etc.).
Utile pour fixer la valeur d'autres items ou changer les attributs visuels de l'item selon sa valeur.
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Post-Update
Se déclenche après que la ligne a été mise à jour en base.
Peut être utilisé pour effectuer des actions complémentaires à la mise à jour ( insertions, mises à jours, suppression dans d'autres tables).
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
Déclencheurs de type PRE-xxx
Pre-Block
Pre-Commit
Se déclenche pendant la phase d'enregistrement, lorsque le statut de la forme indique que des enregistrements sont marqués pour insertion, mise à jour, suppression mais avant d'exécuter les ordres du DML.
Remarque : si vous effectuez des opérations explicites INSERT, UPDATE ou DELETE à l'intérieur de ce déclencheur et que l'opération échoue, vous devez gérer manuellement l'annulation (Rollback).
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
Pre-Delete
Se déclenche pendant la phase d'enregistrement, juste avant la suppression en base et pour chaque enregistrement marqué pour suppression.
Peut être utilisé pour vérifier l'intégrité référentielle (si elle n'est pas appliquée au niveau de la base) ou pour gérer la suppression des enregistrements des blocs détail dans une relation Maître/détail.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
Pre-Form
Pre-Insert
Se déclenche pendant la phase d'enregistrement, juste avant l'insertion en base et pour chaque enregistrement marqué pour insertion.
Peut être utilisé pour initialiser la valeur de certaines colonnes (séquence).
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
/* Pre-Insert
Récupération du numéro de séquence
*/
Declare
LN$NumSeq NUMBER ;
Begin
SELECT ma_sequence.NEXTVAL
INTO LN$NumSeq
FROM DUAL;
:EMP.CODE := LN$NumSeq ;
End;
Pre-Logon
Se déclenche au début du processus de connexion.
Utilisé pour l'accès aux bases non Oracle.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Pre-Logout
Se déclenche au début du processus de déconnexion.
Utilisé pour l'accès aux bases non Oracle.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
Pre-Popup-Menu
Se déclenche lorsque l'utilisateur utilise le bouton droit de la souris sur un item ou un canevas supportant un menu instantané, mais juste avant que celui-ci ne soit affiché.
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: NON
Pre-Query
Se déclenche lors du processus d'interrogation (EXECUTE-QUERY) juste avant que Forms construise et exécute le SELECT.
C'est l'endroit idéal pour récupérer les valeurs saisies par l'utilisateur en mode interrogation (ENTER-QUERY) et éventuellement les modifier.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
/* Pre-Query
le bloc est basé sur une table volumineuse
l'utilisateur doit saisir au moins les trois premiers
caractères de recherche pour lancer l'interrogation
*/
If LENGTH( :BLOC.ITEM < 3 ) Then
Message( 'Saisir au moins 3 caractères' ) ;
- on arrête tout !
Raise Form_Trigger_Failure ;
End if ;
Pre-Record
Se déclenche lorsque le focus se déplace sur un nouvel enregistrement pendant le processus de navigation.
Ne se déclenche que si l'unité de validation a été fixée à Item ou Enregistrement.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
/* Pre-Record
on empêche l'insertion d'un nouvel enregistrement
si les conditions ne sont pas réunies
*/
If not (conditions...) Then
Raise Form_Trigger_Failure ;
End if ;
Pre-Select
Se déclenche pendant la phase d'interrogation (EXECUTE-QUERY) juste avant l'ouverture du curseur.
L'ordre SELECT peut être examiné en interrogeant la variable système : :SYSTEM.LAST_QUERY
Utilisé particulièrement pour les accès aux bases non Oracle.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
/* Pre-Select
affichage de l'ordre SELECT
*/
Declare
LN$But NUMBER ;
Begin
Set_Alert_Property( 'ALERTE', TITLE, 'Dernier ordre Select' ) ;
Set_Alert_Property( 'ALERTE', ALERT_MESSAGE_TEXT, :SYSTEM.LAST_QUERY ) ;
LN$But := Show_Alert( 'ALERTE' ) ;
End ;
Pre-Text-Item
Se déclenche lorsque le focus arrive dans l'item, pendant le processus de navigation.
Ne se déclenche que si l'unité de validation a été fixée à Item.
Niveau d'implémentation:
forme, bloc, item.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes
Valide en mode enter-query: NON
/* Pre-Text-Item
alimentation de l'item depuis un calcul
*/
:BLOCK.ITEM := (:BLOCK.IT1 * :BLOCK.IT2 ) / 100.0 ;
Pre-Update
Se déclenche pendant la phase d'enregistrement, juste avant la mise à jour en base et pour chaque enregistrement marqué pour modification.
Niveau d'implémentation:
forme, bloc.
Commandes autorisées:
Instructions SELECT, INSERT, UPDATE, DELETE, fonctions natives non restreintes
Valide en mode enter-query: NON
/* Pre-Update
mise a jour valide ?
*/
Declare
LN$Dummy VARCHAR2(1) := 0 ;
Begin
SELECT '1'
INTO LN$Dummy
FROM la_table
WHERE EXISTS( SELECT ... ) ;
If LN$Dummy = 0 Then
Message( 'Mise à jour interdite' ) ;
Raise Form_Trigger_Failure ;
End if ;
End;
Déclencheurs de procédures stockées
Delete-Procedure
Déclencheur automatiquement créé par Forms lorsque le bloc est basé sur une procédure stockée.
Ne modifiez jamais ce déclencheur.
Lorsqu'un enregistrement doit être supprimé, Forms appelle la procédure stockée qui gère la suppression.
Insert-Procedure
Déclencheur automatiquement créé par Forms lorsque le bloc est basé sur une procédure stockée.
Ne modifiez jamais ce déclencheur.
Lorsqu'un enregistrement doit être inséré, Forms appelle la procédure stockée qui gère l'insertion.
Lock-Procedure
Déclencheur automatiquement créé par Forms lorsque le bloc est basé sur une procédure stockée.
Ne modifiez jamais ce déclencheur.
Lorsqu'un enregistrement doit être verrouillé, Forms appelle la procédure stockée qui gère le verrouillage.
Query-Procedure
Déclencheur automatiquement créé par Forms lorsque le bloc est basé sur une procédure stockée.
Ne modifiez jamais ce déclencheur.
Lors de la phase d'interrogation (EXECUTE-QUERY), Forms appelle la procédure stockée qui gère la requête.
Update-Procedure
Déclencheur automatiquement créé par Forms lorsque le bloc est basé sur une procédure stockée.
Ne modifiez jamais ce déclencheur.
Lorsqu'un enregistrement doit être modifié, Forms appelle la procédure stockée qui gère la mise à jour.
Autres déclencheurs de type WHEN-xxx
When-Form-Navigate
Se déclenche lors de la navigation entre les formes.
Niveau d'implémentation:
forme.
Commandes autorisées:
Fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: NON
When-Image-Pressed
Se déclenche lors d'un simple ou double-clic sur un item de type image.
Niveau d'implémentation:
forme.
Commandes autorisées:
Instructions SELECT, fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: OUI
/* When-Image-Pressed
Agrandissement de l'image
*/
Set_Item_Property( 'BLOC.IMAGE', WIDTH, 200 ) ;
Set_Item_Property( 'BLOC.IMAGE', HEIGHT, 100 ) ;
When-Tab-Page-Changed
Se déclenche lorsqu'un évènement explicite de navigation d'item ou de souris change de page d'onglet.
Ne se déclenche pas lorsque l'on change d'onglet par programme ou lors d'un déplacement implicite ( item suivant avec la touche Tab).
Utile pour toute action relative à un changement d'onglet.
Niveau d'implémentation:
forme.
Commandes autorisées:
Fonctions natives non restreintes, fonctions natives restreintes
Valide en mode enter-query: NON
|