Le guide Oracle Forms 9i/10g
Date de publication : Juin 2005
Les différents statuts de la forme et variables système
Les différents statuts de la forme et variables système
Forms maintient en permanence des variables système qui indiquent le statut courant de la forme.
Dans la forme en cours
:SYSTEM.FORM_STATUS qui peut prendre trois valeurs:
- CHANGED indique que la forme contient au moins un bloc dont au moins un enregistrement a été modifié
- NEW indique que la forme ne contient que de nouveaux enregistrements
- QUERY indique qu'un query est ouvert et qu'aucun bloc ne contient d'enregistrement modifé
Cette variable peut être consultée pour savoir si la forme nécessite un enregistrement
If :SYSTEM.FORM_STATUS = 'CHANGED' Then
Commit_Form ;
End if ;
Dans le bloc en cours
:SYSTEM.BLOCK_STATUS qui peut prendre trois valeurs:
- CHANGED indique que le bloc contient au moins un enregistrement modifié
- NEW indique que le bloc ne contient que de nouveaux enregistrements
- QUERY indique que le bloc ne contient que des enregistrements valides
Cette variable peut être consultée pour savoir si les données d'un bloc ont été modifiées
If :SYSTEM.BLOCK_STATUS = 'CHANGED' Then
Commit_Form ;
End if ;
Dans l'enregistrement en cours
:SYSTEM.RECORD_STATUS qui peut prendre quatre valeurs:
- CHANGED indique que l'enregistrement est modifié
- INSERT indique que la présence d'un nouvel enregistrement (non présent en base)
- NEW indique qu'un nouvel enregistrement est créé (il ne contient alors aucune valeur)
- QUERY indique que l'enregistrement est valide (non modifié)
Cette variable peut être consultée pour savoir si l'enregistrement en cours peut être effacé
If :SYSTEM.RECORD_STATUS In ('CHANGED','INSERT') Then
Commit_Form ;
End if ;
Clear_Record ;
Dans quel mode se trouve la forme ?
A tout moment l'on peut interroger le mode en cours en interrogeant la variable:
:SYSTEM.MODE qui peut prendre trois valeurs:
- NORMAL indique que la forme est en mode normal (saisie)
- ENTER-QUERY indique que la forme est en mode interrogation
- QUERY indique que la forme est en train d'exécuter un query
L'exemple suivant démontre comment afficher une LOV dans le champ :EMP.EMPNO lors d'une interrogation
When-New-Item-Instance (niveau bloc) If :SYSTEM.CURSOR_ITEM = 'EMP.EMPNO'
And :SYSTEM.MODE = 'ENTER-QUERY' Then
Show_Lov( 'LOV_EMP' ) ;
End if ;
Les variables associées aux déclencheurs
:SYSTEM.TRIGGER_BLOCK indique le nom du bloc dans lequel un trigger a été déclenché
Cette valeur est NULL si le déclenchement provient de PRE-FORM ou POST-FORM.
Cette variable peut être utilisée dans un déclencheur de niveau forme pour savoir de quel bloc provient le déclenchement
When-New-Block-Instance (niveau forme) Declare
LC$Bloc Varchar2(30) := :System.trigger_Block ;
Begin
If LC$Bloc = 'EMP' Then
...
Elsif LC$Bloc = 'DEPT' Then
...
End if ;
End ;
:SYSTEM.TRIGGER_ITEM indique le nom de l'item dans lequel le trigger vient d'être déclenché
Lors de la navigation, lorsqu'aucun item n'a le focus (PRE/POST RECORD, BLOCK, FORM) cette valeur est NULL
When-New-Item-Instance (niveau forme) Declare
LC$Item Varchar2(61) := :System.trigger_Item ;
Begin
If LC$Item = 'EMP.EMPNO' Then
...
Elsif LC$Item = 'DEPT.DEPTNO' Then
...
End if ;
End ;
Item de type Tree (Arborescence)
:SYSTEM.TRIGGER_NODE_SELECTED, valorisé uniquement lors du déclenchement de When-Tree-Node-Selected, indique si le noeud de l'arbre est sélectionné (TRUE) ou déselectionné (FALSE).
:SYSTEM.TRIGGER_NODE indique le nom du noeud sélectionné dans un arbre (Tree)
Relation Maître-détail
:SYSTEM.COORDINATION_OPERATION indique l'opération de coordination liée à la relation
:SYSTEM.MASTER_BLOCK indique le nom du bloc maître de la relation
Variables de localisation
:SYSTEM.CURSOR_BLOCK indique le nom du bloc où se situe le curseur
:SYSTEM.CURSOR_ITEM indique le nom de l'item où se situe le curseur
Declare
LC$Item Varchar2(61) := :System.Cursor_Item ;
Begin
If LC$Item = 'EMP.EMPNO' Then
...
End if ;
End ;
:SYSTEM.CURSOR_RECORD indique le numéro de l'enregistrement où se situe le curseur
Message( 'Modification de l''enregistrement n° : ' || :System.Cursor_Record ) ;
Valeur de l'item (Varchar2) en cours
:SYSTEM.CURSOR_VALUE indique la valeur de l'item en cours
If :System.Cursor_Value = '50' Then
...
End if ;
Si aucun item n'a le focus, cette valeur est NULL
Synchronisation avec la date de la base
:SYSTEM.DATE_THRESHOLD représente l'intervale de temp (MI:SS) au bout duquel Forms synchronise ses variables dates internes avec celle de la base.
Les dates internes sont celles correspondant aux variables $$DBDATE$$, $$DBDATETIME$$ et $$DBTIME$$
La valeur par défaut est : 01:00 (une minute)
:System.Date_Threshold := '00:30' ;
:SYSTEM.EFFECTIVE_DATE représente la date système de la base au format : DD-MON-YYYY HH24:MI:SS
Cette variable peut être utilisée pour simuler une action dans le passé ou le futur
:System.Effective_Date := '01-DEC-2010 14:00:00' ;
Evènements sur les fenêtres
:SYSTEM.EVENT_WINDOW indique le nom de la fenêtre pour laquelle l'un des déclencheurs suivants s'est activé:
- WHEN-WINDOW-ACTIVATED
- WHEN-WINDOW-CLOSED
- WHEN-WINDOW-DEACTIVATED
- WHEN-WINDOW-RESIZED
Variables liées à la souris
:SYSTEM.MOUSE_BUTTON_MODIFIERS indique la touche clavier enfoncé lors du click
- Shift+
- Caps Lock+
- Control+
- Alt+
- Command+
- Super+
- Hyper+
:SYSTEM.MOUSE_BUTTON_PRESSED indique le numéro du bouton utilisé
Declare
LN$Btn Varchar2(1) := :System.Mouse_Button_Pressed ;
Begin
If LN$Btn = '1' Then
Message('Bouton gauche' );
ElsIf LN$Btn = '2' Then
Message('Bouton milieu' );
Else
Message('Bouton droit' );
End if ;
End ;
:SYSTEM.MOUSE_BUTTON_SHIFT_STATE indique la touche clavier activée pendant le clic
- Shift+ touche Majuscule enfoncée
- Ctrl+ touche Contrôle enfoncée
- Alt+ touche alt enfoncée
- Shift+Ctrl+ touches Majuscule + Contrôle enfoncées
:SYSTEM.MOUSE_CANVAS indique le nom du canevas sur lequel se trouve le pointeur de souris
:SYSTEM.MOUSE_FORM indique le nom de la forme sur laquelle se trouve le pointeur de souris
:SYSTEM.MOUSE_ITEM indique le nom de l'item sur lequel se trouve le pointeur de souris
:SYSTEM.MOUSE_RECORD_OFFSET représente le déplacement par rapport au premier enregistrement visible
:SYSTEM.MOUSE_RECORD indique le numéro de l'enregistrement dans lequel se trouve le pointeur de souris
:SYSTEM.MOUSE_X_POS indique la position horizontale de la souris en pixels
:SYSTEM.MOUSE_Y_POS indique la position verticale de la souris en pixels
Autres variables
:SYSTEM.LAST_FORM représente l'identifiant de la forme précédente (dans une application multi formes)
Declare
LN$Id FORMMODULE ;
Begin
LN$Id.ID := To_Number( :System.Last_Form ) ;
Close_Form( LN$Id ) ;
End ;
:SYSTEM.LAST_RECORD indique s'il s'agit du dernier enregistrement du bloc
Begin
First_Record ;
Loop
Exit when :System.last_Record = 'TRUE' ;
...
Next_Record ;
End loop ;
End ;
:SYSTEM.LAST_QUERY retourne l'ordre SELECT correspondant au dernier FETCH exécuté lors du query d'un bloc
:SYSTEM.MESSAGE_LEVEL indique le niveau d'affichage des messages de Forms.
La valeur peut être:
Au cours de la session, Forms supprime l'affichage des erreurs dont le niveau de gravité est inférieur ou égal à cette valeur.
En effet, à chaque erreur Forms est associé un niveau de gravité.
Pour ne pas afficher ces messages, positionnez la variable :System.Message_Level au niveau voulu
Declare
LN$MsgNum Pls_Integer := :System.Message_Level ;
Begin
:System.Message_Level := 5 ;
Commit_Form ;
:System.Message_Level := LN$MsgNum ;
End ;
:SYSTEM.SUPPRESS_WORKING permet d'afficher ou masquer le message : "Working..."
:System.Suppres_Working := 'TRUE' ;
Go_block( 'EMP' ) ;
Execute_Query ;
Go_block( 'DEPT' ) ;
Execute_Query ;
...
:System.Suppres_Working := 'FALSE' ;
:SYSTEM.TAB_NEW_PAGE indique le nom de l'onglet vers lequel on se dirige
:SYSTEM.TAB_PREVIOUS_PAGE indique le nom de l'onglet d'où l'on vient
|