Docstoc

Les23

Document Sample
Les23 Powered By Docstoc
					Introduction aux applications multi-forms




       Copyright © Oracle Corporation, 2002. Tous droits réservés.
                             Objectifs


A la fin de ce chapitre, vous pourrez :
 • appeler une Form à partir d'un autre module Form
 • définir des fonctionnalités multi-forms
 • partager des données entre des Forms ouvertes




            Copyright © Oracle Corporation, 2002. Tous droits réservés.
Présentation des applications multi-forms

•   Comportement :
    – Navigation souple entre les fenêtres.
    – Une seule ou plusieurs connexions de base de données.
    – Les transactions peuvent concerner plusieurs Forms, le
      cas échéant.
    – Commit dans l'ordre d'ouverture des Forms, en
      commençant par la Form active.
•   Liens :
    – Les données sont échangées par des variables
      globales, des listes de paramètres, des groupes
      d'enregistrements globaux ou des variables PL/SQL
      dans des bibliothèques partagées.
    – Le code est partagé si nécessaire, par l'intermédiaire de
      bibliothèques et de la base de données.

              Copyright © Oracle Corporation, 2002. Tous droits réservés.
                Session multi-forms

 Forms
                                                                          Form C
Runtime
                                                 Ouvrir
                 Ouvrir                          (Paramètres)
      Form A                     Form B
                (Paramètres)


                                                 Ouvrir
                                              (Paramètres)

                                                                     Form D




          Variables globales
   Groupes d'enregistrements globaux
           Variables PL/SQL

            Copyright © Oracle Corporation, 2002. Tous droits réservés.
     Avantages des applications multi-forms
  Le fractionnement d'une application en plusieurs
  Forms présente les avantages suivants :
   • Débogage plus facile
   • Modularité
   • Performances et évolutivité

                                 Chemin 1
                                 (Module 1)



                                 Chemin 2
Module fractionné                (Module 2)
en sous-
ensembles basés
sur la navigation
utilisateur

                    Copyright © Oracle Corporation, 2002. Tous droits réservés.
Copyright © Oracle Corporation, 2002. Tous droits réservés.
   Démarrer un autre module Form


                         OPEN_FORM

     MDI                                                             MDI

Form A                                                    Form A
                                                                         Form B
                  OPEN_FORM                                               Non
                                                                         modale




           Copyright © Oracle Corporation, 2002. Tous droits réservés.
     Définir des fonctionnalités multi-forms
Scénario de l'application Summit :
       • Exécutez les Forms CUSTOMERS et ORDERS
          dans la même session, en naviguant
          librement entre elles.
• Vous pouvez
   apporter des
   modifications à
   plusieurs Forms
   dans la même
   transaction.
• Toutes les Forms
   sont visibles en
   même temps.


             Copyright © Oracle Corporation, 2002. Tous droits réservés.
   Définir des fonctionnalités multi-forms


Actions :
 1. Définissez une fenêtre et une position pour
    chaque Form.
 2. Planifiez les données partagées, telles que les
    variables globales et leur nom.
 3. Implémentez des déclencheurs pour :
     – ouvrir d'autres Forms
     – initialiser les données partagées à partir des Forms
       appelantes
     – utiliser les données partagées dans les Forms
       ouvertes



             Copyright © Oracle Corporation, 2002. Tous droits réservés.
Copyright © Oracle Corporation, 2002. Tous droits réservés.
   Partager des données entre modules


Vous pouvez transmettre des données entre modules
en utilisant des :
 • Variables globales
 • Listes de paramètres
 • Groupes d'enregistrements globaux
 • Variables de package PL/SQL dans des
    bibliothèques partagées




           Copyright © Oracle Corporation, 2002. Tous droits réservés.
Liaison à l'aide de variables globales

      CUSTOMERS
     Customer                                  ORDERS
        ID                            Order
                                      Customer_ID




  GLOBAL.CUSTOMERID




      Copyright © Oracle Corporation, 2002. Tous droits réservés.
Variables globales : ouvrir une autre Form

Exemple

 :GLOBAL.customerid := :CUSTOMERS.customer_id;
 OPEN_FORM('ORDERS');

Remarques
 • Le contrôle est transmis immédiatement à la Form
   ORDERS et aucune instruction après OPEN_FORM
   n'est traitée.
 • Si la valeur NO_ACTIVATE est affectée à l'argument
   Activate_Mode, vous conservez le contrôle dans la
   Form active.
 • La transaction se poursuit, sauf si elle a été
   validée explicitement auparavant.

            Copyright © Oracle Corporation, 2002. Tous droits réservés.
    Variables globales : interrogation
         restreinte au démarrage

When-New-Form-Instance




Execute_Query;

           Pre-Query




 :ORDERS.customer_id := :GLOBAL.customerid;




           Copyright © Oracle Corporation, 2002. Tous droits réservés.
    Affecter des variables globales dans la
                 Form ouverte

•   DEFAULT_VALUE garantit l'existence des variables
    globales.
•   Vous pouvez utiliser des variables globales pour
    indiquer que la Form est en cours d'exécution.

Exemple Pre-Form :


DEFAULT_VALUE('', 'GLOBAL.customerid');




            Copyright © Oracle Corporation, 2002. Tous droits réservés.
    Liaison à l'aide de listes de paramètres


Les paramètres :                                                            EMP_FORM
 • Sont des objets d'un module Form
 • Propriétés :
     –   Name
     –   Parameter Data Type
     –   Maximum Length
     –   Parameter Initial Value
•    Peuvent éventuellement recevoir une nouvelle
     valeur :




              Copyright © Oracle Corporation, 2002. Tous droits réservés.
  Liaison à l'aide de listes de paramètres

Exemple :
DECLARE
    pl_id   ParamList;
    pl_name VARCHAR2(10) := 'tempdata';
BEGIN
    pl_id := GET_PARAMETER_LIST(pl_name);
    IF ID_NULL(pl_id) THEN
1 pl_id := CREATE_PARAMETER_LIST(pl_name);
    ELSE
     DELETE_PARAMETER(pl_id,'deptno');
    END IF;
2 ADD_PARAMETER(pl_id,'deptno',TEXT_PARAMETER,
       to_char(:departments.department_id));
3 OPEN_FORM('called_param',ACTIVATE,NO_SESSION,pl_id);
END;


            Copyright © Oracle Corporation, 2002. Tous droits réservés.
  Liaison à l'aide de listes de paramètres


Exemple :               Déclencheur When-New-Form-Instance
Form appelée
                        IF :parameter.deptno IS NOT NULL THEN
                          SET_BLOCK_PROPERTY('employees',
                            DEFAULT_WHERE,'department_id =
                            '||:parameter.deptno);
                          SET_WINDOW_PROPERTY('window1',
                            TITLE,'Employees in Department ‘
                            ||:parameter.deptno);
                        END IF;
                        GO_BLOCK('employees');
                        EXECUTE_QUERY;
 Créez un paramètre                 Utilisez le nom du
    dans la Form            paramètre précédé de :parameter




            Copyright © Oracle Corporation, 2002. Tous droits réservés.
               Liaison à l'aide de groupes
               d'enregistrements globaux
1. Créez un groupe d'enregistrements avec une portée globale :
      DECLARE
         rg_name       VARCHAR2(40) := 'LIST';
         rg_id         RecordGroup;
         Error_Flag NUMBER;
      BEGIN
         rg_id := FIND_GROUP(rg_name);
         IF ID_NULL(rg_id) THEN
           rg_id := CREATE_GROUP_FROM_QUERY('LIST',
             'Select last_name, to_char(employee_id)
             from employees',GLOBAL_SCOPE);
         END IF;
2. Remplissez le groupe d'enregistrements :
        Error_Flag := POPULATE_GROUP(rg_id);
3.   Utilisez le groupe d'enregistrements dans n'importe quelle
     Form.

                 Copyright © Oracle Corporation, 2002. Tous droits réservés.
Liaison à l'aide de variables PL/SQL partagées

 Avantages :
  • Elles utilisent moins de mémoire que les variables
       globales.
  • Elles peuvent être de n'importe quel type de données.
 Utilisation :
  1. Créez une bibliothèque PL/SQL.
  2. Créez une spécification de package avec des variables.
  3. Attachez la bibliothèque à plusieurs Forms.
  4. Définissez les valeurs des variables dans la Form
       appelante.
  5. Exécutez OPEN_FORM avec l'option
       SHARE_LIBRARY_DATA.
  6. Utilisez les variables dans la Form ouverte.



               Copyright © Oracle Corporation, 2002. Tous droits réservés.
Liaison à l'aide de variables PL/SQL
              partagées




    OPEN_FORM('called_lib',ACTIVATE,
      NO_SESSION,SHARE_LIBRARY_DATA);



      Copyright © Oracle Corporation, 2002. Tous droits réservés.
          Ouverture conditionnelle


Exemple

 IF  ID_NULL(FIND_FORM('ORDERS')) THEN
      OPEN_FORM('ORDERS');
 ELSE
      GO_FORM('ORDERS');
 END IF;




          Copyright © Oracle Corporation, 2002. Tous droits réservés.
               Fermer la session




       Form C

                       Form B



             Runtime
                                                                       Form A



"Celui qui sort le dernier peut-il éteindre la lumière ?"


         Copyright © Oracle Corporation, 2002. Tous droits réservés.
     Fermer une Form avec EXIT_FORM


•   La fonctionnalité par défaut est la même que pour
    la touche Exit.
•   L'argument Commit_Mode définit l'action à
    exécuter lors de changements non validés.

ENTER;
IF :SYSTEM.FORM_STATUS = 'CHANGED' THEN
    EXIT_FORM( DO_COMMIT );
ELSE
    EXIT_FORM( NO_COMMIT );
END IF;



            Copyright © Oracle Corporation, 2002. Tous droits réservés.
           Autres déclencheurs utiles


Gérer des liens référentiels et synchroniser les données
entre Forms :
 • Dans la Form parent :
     – When-Validate-Item
     – When-New-Record-Instance
•   Dans les Forms ouvertes : When-Create-Record
•   Dans n'importe quelle Form : When-Form-Navigate




             Copyright © Oracle Corporation, 2002. Tous droits réservés.
                               Synthèse

Ce chapitre vous a permis d'apprendre que :
 • OPEN_FORM est la principale méthode permettant
    d'appeler une Form à partir d'un autre module Form
 • vous pouvez définir des fonctionnalités multi-forms,
    par exemple pour déterminer :
     – si toutes les Forms s'exécutent dans la même session
     – où les fenêtres s'affichent
     – si plusieurs Forms doivent être ouvertes simultanément
     – si les utilisateurs doivent pouvoir naviguer entre les
       Forms ouvertes
     – comment les données seront partagées entre les Forms



              Copyright © Oracle Corporation, 2002. Tous droits réservés.
                             Synthèse


•   Vous pouvez partager des données entre les
    Forms ouvertes à l'aide de :
    – Variables globales, qui s'étendent sur plusieurs
      sessions
    – Listes de paramètres, pour la transmission de
      valeurs entre Forms spécifiques
    – Groupes d'enregistrements créés dans une Form
      avec une portée globale
    – Variables PL/SQL dans des bibliothèques partagées




            Copyright © Oracle Corporation, 2002. Tous droits réservés.
         Présentation de l'exercice 23


Dans cet exercice, vous allez :
 • lier les Forms ORDERS et CUSTOMERS à l'aide d'une
   variable globale
 • utiliser des sous-programmes intégrés pour
   déterminer si la Form ORDERS est en cours
   d'exécution
 • utiliser des variables globales afin de restreindre
   une interrogation dans la Form ORDERS




            Copyright © Oracle Corporation, 2002. Tous droits réservés.

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:4
posted:8/18/2012
language:French
pages:28