Le guide Oracle Forms 9i/10g


précédentsommairesuivant

XII. Les Paramètres

XII-A. Définition

Un paramètre Forms est une variable typée permettant de transmettre une valeur lors de l'appel de cette forme (par mécanisme d'appel interformes ou depuis la ligne de commande).

Il s'agit donc d'un mécanisme de passage de valeur entre plusieurs formes.
Le passage reste toutefois mono directionnel.
Un paramètre est transmis par la forme appelante vers la forme appelée, mais sa valeur ne peut pas être récupérée par la forme appelante.

Un paramètre doit avoir été explicitement défini dans une forme pour pouvoir être passé par la forme appelante et interprété par la forme appelée.

Son domaine de visibilité est restreint à la forme qui le contient.

XII-B. Concept

Un paramètre peut être de l'un des trois types suivants:

  • CHAR (longueur maxi : 64Ko)
  • NUMBER
  • DATE

La valeur d'un paramètre peut être lue mais aussi modifiée dans la forme.

Ce mécanisme permet de transmettre un ou plusieurs paramètres à une forme appelée via les instructions CALL_FORM(), OPEN_FORM() et NEW_FORM()

Plusieurs paramètres peuvent être transmis d'un coup à la forme appelée via les fonctions native de gestion de liste de paramètres.

Il n'y a pas de limite au nombre de paramètres pouvant être créées dans un module.

XII-C. Mise en œuvre

Création d'un paramètre

Cliquer sur le nœud : Paramètres dans le navigateur d'objets.
Un nouveau paramètre est créé avec un nom attribué par le système.

Faire un double-clic sur le nœud du nouveau paramètre pour afficher la palette de propriétés.

Image non disponible

La propriété : Longueur maximum est réservée aux paramètre de type Char et ne peut, dans ce cas excéder 64 Ko
Une valeur initiale peut être appliquée. C'est cette valeur qui sera conservée par la forme si ce paramètre n'est pas transmis explicitement par la forme appelante.


Dupliquer un Paramètre

Pour dupliquer un paramètre existant, cliquez le paramètre que vous voulez dupliquer et taper Ctrl-D au clavier. (ou menu : Edition->Dupliquer)


Modifier la valeur d'un paramètre à l'exécution

Vous pouvez modifier la valeur d'un paramètre à tout moment comme celle d'un item ou d'une variable globale.

Le nom du paramètre doit être préfixé avec :PARAMETER

Si votre paramètre s'intitule : DATE_ENTREE, vous pouvez interroger cette valeur avec la syntaxe suivante:
Var_locale := :PARAMETER.DATE_ENTREE ;

Et le modifier de la façon suivante:
:PARAMETER.DATE_ENTREE := nouvelle_valeur ;

Evidemment, la valeur doit correspondre en type avec celui du paramètre.


Mécanisme de transmission des paramètres

Les paramètres sont transmis à la forme appelée via une liste de paramètres.

Un objet de type liste de paramètres doit être créé, puis les paramètres doivent être ajoutés à cette liste.

Nous souhaitons transmettre à la forme appelée les deux paramètres suivants:

  • Le numéro de client (NUMBER)
  • Une date de commande (DATE)

La forme appelée contient deux paramètres pour accueillir ces valeurs:

  • NUM_CLI pour le numéro client
  • DATE_CDE pour la date de commande

Dans le déclencheur qui servira de support à l'appel de la nouvelle forme, nous créons une variable de type liste de paramètres et lui affectons les valeurs correspondantes :

 
Sélectionnez

-- Code PL/SQL d'appel de la forme 'FACTURES'
DECLARE 
   List_id ParamList; -- variable de type liste de paramètres
BEGIN 
  -- création de la liste --
  List_id := Create_Parameter_List('param_list'); 

  -- ajout à la liste du numéro client --
  Add_Parameter(List_id, 'NUM_CLI',TEXT_PARAMETER, :BLOC.NUM_CLI); 
  
  -- ajout à la liste de la date de commande --
  Add_Parameter(List_id, 'DATE_CDE', TEXT_PARAMETER, To_char( SYSDATE, 'DD/MM/YYYY' );  

  -- Appel de la nouvelle forme avec la liste de paramètres --
  Open_Form( 'FACTURES', ACTIVATE, NO_SESSION, List_id );
End;


Fonctions natives relatives aux paramètres

Ajout d'un paramètre à une liste
ADD_PARAMETER( nom_liste | id_liste, nom_param, type_param, valeur ) ;

Création d'une liste de paramètres
CREATE_PARAMETER_LIST( nom_liste ) ;

Une liste de même nom ne peut pas déjà exister dans la forme. Si tel est le cas, vous devez d'abord la supprimer avec la fonction Destroy_Parameter_List()

Suppression d'un paramètre à la liste
DELETE_PARAMETER( nom_liste | id_liste, nom_param ) ;

Delete_Parameter( 'param_list', 'NUM_CLI' ) ;

Destruction d'une liste de paramètres
DESTROY_PARAMETER_LIST(nom_liste | id_liste ) ;

 
Sélectionnez

Declare 
   pl_id ParamList; 
Begin 
   pl_id := Get_Parameter_List('param_list'); 
   If NOT Id_Null(pl_id) Then
      Destroy_Parameter_List(pl_id); 
   End if; 
End;

Lecture du type de paramètre et de sa valeur
GET_PARAMETER_ATTR( nom_liste | id_liste, nom_param, type_param, valeur ) ;
type_param et valeur sont des variables de type OUT

 
Sélectionnez

Declare
  List_id  ParamList;
  LN$Type  NUMBER ;
  LC$Val   VARCHAR2(1000);
Begin
   List_id := Get_Parameter_List('param_list');
   Get_Parameter_Attr( list_id, 'NUM_CLI', LN$Type, LC$Val ) ;
   Message('La valeur de NUM_CLI est : ' || LC$Val ) ;
End ;

Le contenu de la variable numérique LN$Type peut prendre l'une des constantes suivantes:

  • DATA_PARAMETER
  • TEXT_PARAMETER

Récupération de l'identifiant interne d'une liste de paramètres
GET_PARAMETER_LIST( nom_liste ) ;

Modification du type et/ou de la valeur d'un paramètre existant dans la liste
SET_PARAMETER_ATTR( nom_liste | id_liste, nom_param, type_param, valeur ) ;
nom_liste représente un littéral ou une variable de type VARCHAR2 indiquant le nom donné à la liste lors de sa création. ( la valeur DEFAULT est réservée à Forms et ne peut être utilisée pour nommer une liste).
id_liste est l'identifiant interne le la liste, pouvant être obtenu avec la fonction Get_Parameter_List()
nom_param représente un littéral ou une variable de type VARCHAR2 indiquant le nom donné au paramètre
type_param est de type Varchar2 et peut prendre l'une des deux valeurs suivantes:

  • TEXT_PARAMETER pour transmettre une valeur simple
  • DATA_PARAMETER pour transmettre le nom d'un groupe d'enregistrement (uniquement pour l'appel d'objets Graphics ou Reports)

valeur représente un littéral, une variable ou un objet Forms.

XII-D. Techniques avancées

Les paramètres peuvent être transmis entre différentes formes via les liste de paramètres.

Ils peuvent également être transmis dans une ligne de commande ou via une section du fichier de configuration formsweb.cfg

Transmission depuis la ligne de commande
ifweb90 MODULE=FACTURES USERID=scott/tiger NUM_CLI=12859 DATE_CDE=« 10/10/2004 »

Transmission via le fichier de configuration formsweb.cfg

Les paramètres peuvent être transmis à la forme par l'intermédiaire du fichier de configuration formsweb.cfg via le mot clé : otherparams

XII-E. Conseils pratiques

Si vous devez référencer le contenu d'un paramètre depuis un menu ou une procédure de librairie PL/SQL, utilisez la fonction Name_In().

 
Sélectionnez

-- Procédure en librairie PL/SQL --
...
If Name_In( 'PARAMETER.NUM_CLI' ) = 25698 Then
   ...
End if;
...

Forms maintient automatiquement, pour chaque forme, une liste de paramètres par défaut nommée DEFAULT (raison pour laquelle vous ne pouvez pas créer une liste qui porte ce nom).

Cette liste défaut contient la liste des paramètres actuels de la forme et peut être transmise comme n'importe quelle autre liste.

 
Sélectionnez

DECLARE 
   List_id ParamList; -- variable de type liste de paramètres
BEGIN 
  -- récupération identifiant interne de la liste par défaut --
  List_id := Get_Parameter_List('DEFAULT'); 

  -- Appel de la nouvelle forme avec la liste de paramètres --
  Open_Form( 'FACTURES', ACTIVATE, NO_SESSION, List_id );
End;

Cette particularité est intéressante lorsque toutes vos formes contiennent les même paramètres et que vous souhaitez les transmettre tels quels.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2005 SheikYerbouti. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.