Liste Partagée Objet (LPO)
Introduction
Une liste partagée objet est une table temporaire qui aura une durée de vie variable selon l’endroit où elle sera déclarée : le cadre d’exécution de la liste partagée objet.
Cette table sera accessible dans toutes les requêtes du cadre d’exécution.
Définition d’une LPO
Afin d’utiliser une LPO, il faut tout d’abord déclarer un modèle de liste paramétrée objet. Une LPO sera une instance du modèle de liste partagée objet. On pourra donc manipuler plusieurs LPO possédant le même modèle dans un cadre d’exécution donné.
La définition du modèle de liste partagée objet se trouve dans l’explorateur « Studio DIAPASON », dans la branche « DIALOG »
Localisation
Structure Générale
Référence: Référence du modèle.
Désignation: Désignation du modèle.
Propriétés: Les propriétés sont une liste d’informations qui pourront être renseignées sur une LPO.
Elles sont sélectionnable à partir du Drag & Drop lancé par le bouton.
Ces propriétés sont des variables spécifiques DIAPASON appelées « Variables Propriétés Objets (VPO).
Commentaire: Zone commentaire permettant de mettre des remarques diverses sur le modèle.
Méthode MAJ: Requête REB de mise à jour de la LPO. Requête dans laquelle on gèrera tous les opérations sur la LPO.
Depuis cette application on accède à la définition de la structure via la barre de commande ou le menu contextuel.
Définition structure modèle de liste partagée objet
Référence Info: Référence du champ de la structure
Désignation: Désignation du champ de la structure.
Numéro d’ordre: Numéro d’ordre dans la structure.
Type Trans.Type du champ :
Caractère
Date
Numérique
Logique
Format Info.: Format du champ, directement lié au type sélectionné précédemment.
A partir de la barre de commande ou du menu contextuel de cette application, on a accès à la définition des index
Définition Index du modèle de liste partagée objet
Index: Référence de l’index défini.
Désignation: Désignation de l’index défini
Primaire ? Logique permettant de définir si un index est primaire ou non. (Index défaut du modèle)Le modèle ne peut avoir qu’un seul index primaire.
Unique ? Logique permettant de définir si un index est unique ou non. Si il est unique on ne pourra définir deux modèles dont les valeurs des champs définis dans l’index sont identiques.
Définition: Définition des champs de l’index.
Utilisation
Définition d’une Liste Partagée Objet
Pour pouvoir utiliser une LPO dans une requête, il est nécessaire de la déclarer et de la définir sur la requête.
Cette déclaration se fait à partir de l’action « Listes Partagées Objet » du menu contextuel (ou de la barre de commandes) de l’application de définition des requêtes.
Cette action lance une application dans laquelle on définit les LPO qui seront utilisées dans la requête.
LPO: Référence de la LPO.
Modèle: Référence du modèle de la LPO. On définit ainsi la structure ainsi que les index de la LPO.
Désignation: Désignation de la LPO.
Type Variable: Type de la variable qui contient l’identifiant de connexion de la LPO. Sélection parmi les types de variables SCR, VAC, VBP, VCR, et XML.
Ref. Variable: Référence de la variable qui contient l’identifiant de connexion de la LPO. Sélection parmi les variables du type choisi sur la zone précédente (variables caractère).
Connexion: Mode de connexion automatique de la LPO lors du démarrage de la requête. Choix parmi :
[0] Connexion par requête | Il faut utiliser les instructions DIALOG dédiées (LPO-METHODE) pour connecter la LPO. |
[1] Connexion effectuée par variable donnée | La variable donnée doit contenir l’instance valide d’une LPO ; dans ce cas elle est connectée automatiquement. |
[2] Connexion effectuée par variable donnée (créée si ne peut être connectée) | Identique au cas ci-dessus, mais si la variable est vide ou ne contient pas une instance valide de LPO celle-ci est créée. |
[3] Connexion créée systématiquement (mémorisée dans variable donnée) | Création d’une instance de LPO à chaque exécution de la requête. |
Comportement
Paramètre le comportement de DIAPASON si à l’issue de la phase précédente la LPO n’est pas connectée. Choix parmi :
[0] Exécuter la requête sans LPO | Exécute la requête même si la LPO n’est pas connectée. Risqué car si une instruction accède à la LPO une erreur non désirée se déclenchera. |
[1] Ne pas exécuter la requête (pas d’erreur) | La requête ne s’exécute pas si la LPO n’est pas connectée mais l’utilisateur ne sera pas averti. |
[2] Ne pas exécuter la requête (erreur) | Identique au cas ci-dessus, mais un message d’erreur apparaît à l’écran. |
Les paramètres recommandés pour une requête se répétant (RCT de contrôle local de tableur dynamique par exemple) sont « 2 » pour le mode de connexion (création de la LPO à la première exécution, puis connexion ensuite) et « 2 » pour le comportement.
Exemple : code DIALOG nécessaire pour connecter une LPO :
VLO.Contexte = VBP.CdeLigPri
VLO.RetFct = LPO-CONTEXTE( ACTION= ACCES-CONTEXTE , LPO= CdeLigPri , CONTEXTE= VLO.Contexte )
SI VLO.RetFct EXISTE ET <> ""
LC-Erreur = CLO."Impossible d'exécuter la requête car la LPO n'est pas disponible"
FIN_BLOC
Remplacé par :
Exemple
Dans cet exemple, nous créerons et alimenterons une LPO dans une requête REB, et récupèrerons les enregistrements dans une autre requête REB lancée en tant que procédure dans la première requête.
Définition de la LPO
On définit la structure et les index de la LPO.
Utilisation dans les requêtes
Sur les trois requêtes de notre exemple (DemLPO, DemLPO_2 et modeleLPOM pour la mise à jour de la LPO), on vient attacher la LPO modeleLPO.
Requête DemLPO
Requête DemLPO_2
Requête ModeleLPOM
Le résultat est le suivant :