Skip to main content
Skip table of contents

La liste Partagée Objet (LPO)


Qu’est ce que c’est ?

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 : on appelle ça 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.

Comment créer 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é.

  • ETAPE 1 : définir le modèle de liste partagée

La définition du modèle de liste partagée objet se trouve dans l’explorateur « Studio DIAPASON », dans la branche « DIALOG »

image-20250306-165156.png

On remplit ensuite :

image-20250306-165333.png
  • 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.

  • ETAPE 2 : on définit la structure

Depuis cette application on accède à la définition de la structure via la barre de commande ou le menu contextuel.

image-20250306-165618.png

On remplit ensuite :

image-20250306-165956.png
  • 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.

  • ETAPE 4 : on définit l’index

A partir de la barre de commande ou du menu contextuel de cette application, on a accès à la définition des index

image-20250306-170054.png

On remplit ensuite :

image-20250306-170122.png
  • 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.

Comment utiliser une LPO ?

Voir Définir les Listes Partagées Objet LPO

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.

image-20250310-103909.png

Cette action lance une application dans laquelle on définit les LPO qui seront utilisées dans la requête :

image-20250310-103950.png
  • 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 :



JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.