IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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



Copyright © 2005 SheikYerbouti. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.