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

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

-- Données à enregistrer ? -- 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

-- Données à enregistrer ? -- 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é

-- Enregistrement modifié ? -- 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)

-- Synchronisation avec la date de la base toutes les 30 secondes -- :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

-- Test de la forme à une date dans 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)

-- Fermeture de la forme précédente -- 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

-- Boucle sur les enregistrements 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:

  • 0 (défaut)
  • 5
  • 10
  • 15
  • 20
  • 25
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..."

-- Supression du message -- :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



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.