Oracle HTML DB, création d'un champ de formulaire "liste de sélection".

RCI Informatique, Juillet 2004 - Septembre 2006
Cet exemple, basé sur la version 1.5 d'Oracle HTML DB est facilement transposable à la version 2.2 d'Oracle Application Express.

1 - Objectif

Dans le formulaire généré automatiquement, qui concerne la saisie de personnes, on souhaite que l'indication de la société à laquelle une personne appartient soit effectuée avec un champ de formulaire de type "liste". Ainsi, on évitera de devoir indiquer le numéro de la société, qui restera "masqué" pour les utilisateurs :




2 - Création d'une liste de valeurs (LOV)

- Au niveau du menu principal d'Application Builder, choisir l'onglet "Listes de valeurs (LOV)":

- Il n'y a au départ aucune liste de valeurs, définie pour cette application. Choisir d'en créer une nouvelle :

- Elle sera "entièrement nouvelle" :

- Cette liste sera "dynamique" c'est à dire basée sur une "requête SQL" :

- Renseigner la requête SQL, à partir de la table SOCIETES, en utilisant les deux "alias" d (comme "data") et r (comme "row") :

- Une fois créée, la liste de valeurs apparaît dans le dictionnaire de l'application HTML DB :


 

3 - Modification des pages de saisie de façon à utiliser la liste de valeurs créée

- Dans la page de création d'une nouvelle fiche PERSONNES, il faut que la sélection de la société puisse utiliser la liste créée :

- Accédons aux éléments de la page de saisie d'une nouvelle personne. Le champ de formulaire dans lequel le numéro de société doit être saisi est nommé P9_PER_SOCIETE. Cliquons sur le lien pour accéder aux propriétés de cet objet :

- Il faut modifier deux propriétés de cet objet. D'abord indiquer que son type est une liste SELECT (au sens du langage HTML) :

- Puis indiquer que ce champ est basé sur une liste de valeurs (LOV), qui est la liste nommé "LISTE_SOCIETES" :

 

- Dès que l'on a validé, on peut revenir à la page, en mode utilisation, et il nous est maintenant proposé un choix multiple :

- Le type d'objet "Liste SELECT" convient lorsqu'il y a un nombre réduit de choix (jusqu'à une vingtaine, ce qui correspond à peu près à une page d'écran). Lorsqu'il faut choisir entre un nombre bien plus important d'éléments, nous pourrons utiliser d'autres types d'objets, proposés par HTML DB.

- HTML DB ayant généré deux pages, une de création, l'autre de modification, il faut maintenant apporter les mêmes rectifications d'attributs à l'élement societe de la page "Modification d'une personne".

 

 

4 - Modification de la page de "vue d'ensemble" de façon à afficher des valeurs "en clair"

- Une fois que l'on a créé plusieurs fiches PERSONNES, et que l'on revient à la vue d'ensemble, voilà ce que l'on constate :

- On veut que, en ce qui concerne la société à laquelle appartient chaque personne, ce ne soit pas le numéro de la société, mais son libellé, qui soit affiché.

- On va créer une fonction stockée, rédigée en langage PL/SQL, qui va renvoyer le nom de la société en clair.

- Voici le source PL/SQL de cette fonction, qui sera "soumise" en utilisant le SQL Workshop de HTML DB :

Create or replace function Get_Societe_Lib (n in number) return varchar2 is

  cursor C is select Ste_lib from SOCIETES
  where STE_Num = n;

  w varchar2 (100) := '?';

begin
  for m in C loop
    w := m.Ste_Lib;
    exit; -- loop
  end loop;
  return w;
end;

 

- Comment est obtenu la vue d'ensemble des personnes (Nom, Prenom, Fonction, Société)  ?
C'est, dans la page "vue d'ensemble des personnes", l'objet de type "Région" nommé "Personnes".

- On accède aux propriétés de la région nommée "Personnes".  Cette région est définie par une requête SQL, définie à l'intérieur d'un bloc PL/SQL, dont voici le début de la définition :

l_sql := 'select "PER_NUM","PER_NOM","PER_PRENOM","PER_FONCTION","PER_SOCIETE" from "PERSONNES" ';
 

- On va simplement remplacer le quatrième élément de la requête SQL par un appel à la fonction stockée définie plus haut, en conservant le même alias de colonne.

l_sql := 'select "PER_NUM","PER_NOM","PER_PRENOM","PER_FONCTION",

         Get_Societe_Lib (Per_Societe) "PER_SOCIETE" from "PERSONNES" ';

 

- Maintenant, on dispose du nom de la société "en clair", dans la vue d'ensemble :

.

 



Revenir au sommaire  Application Express






Tous droits réservés, RCI Informatique SA, 2004 - 2006

rci@wanadoo.fr

www.rci-informatique.fr