4D Server, ensembles et sélections

4D - Documentation   Français   English   German   Manuel de référence de 4D Server, Sommaire   Manuel de référence de 4D Server, Index   Retour   Précédent   Suivant

version 11.2 (Modifiée)


Comme décrit dans les sections Présentation des ensembles et Présentation des Sélections Temporaires du manuel Langage de 4D, vous pouvez créer et utiliser des ensembles et des sélections temporaires interprocess, process et locaux :

Ensembles/Sélections temporaires process : Un objet process n'est "visible" que par le process dans lequel il a été créé et, s'il a été créé dans un process client, par le process "jumeau" créé sur le serveur. Les ensembles process sont effacés à la fin de l'exécution de la méthode process. Le nom des objets process ne comporte aucun préfixe particulier.

Ensembles/Sélections temporaires interprocess : Un objet interprocess est visible par tous les process sur le poste (client ou serveur) où il a été créé. Un objet est interprocess lorsque son nom est préfixé des symboles (<>) — le signe "inférieur à" suivi du signe "supérieur à".

Note : Cette syntaxe est valable sous Windows et Mac OS. De plus, sous Mac OS uniquement, vous pouvez employer le symbole diamant (Option+v sur un clavier français).

Ensembles/Sélections temporaires locaux/clients : Un objet local/client est visible uniquement dans le process qui l'a créé. Le nom d'un objet local/client est préfixé du symbole dollar ($). A noter que l'ensemble système UserSet, bien que son nom ne débute pas par $, est un ensemble local/client.

Le tableau suivant indique les principes de visibilité des sélections temporaires et des ensembles en fonction de leur lieu de création (le tableau est identique pour les deux types d'objets) :

x = visible

Vous devez garder à l'esprit cette matrice de visibilité en fonction des opérations que vous souhaitez effectuer. Par exemple, si vous voulez effectuer une opération de type INTERSECTION, assurez-vous que tous les ensembles sont visibles sur le poste effectuant l'opération.

Pour des raisons d'optimisation, il est conseillé de choisir le lieu de création et la portée des objets en fonction de leur nécessité de visibilité.

4D Server et l'ensemble UserSet

4D en mode distant crée l'ensemble UserSet en tant qu'ensemble local (bien que son nom ne débute pas par un $) afin d'optimiser la création de l'ensemble — issu des actions de l'utilisateur effectuées à la suite d'un MODIFIER SELECTION ou VISUALISER SELECTION.

Si vous souhaitez passer UserSet comme paramètre à une commande DIFFERENCE, INTERSECTION ou REUNION dont les autres paramètres sont des ensembles process ou interprocess, vous devez en premier lieu copier UserSet (un ensemble local) dans un ensemble process ou interprocess puis utiliser l'ensemble résultant avec la commande.

Exemple :

   TOUT SELECTIONNER ([uneTable])
      ` Permettons à l'utilisateur sélectionner des enregistrements
   MODIFIER SELECTION ([uneTable];*)
      ` Vérifions si l'utilisateur a sélectionné des enregistrements
   Si (Enregistrements dans ensemble("UserSet")>0)
         ` Recherchons les enregistrements à exclure
      CHERCHER([uneTable];[uneTable]unFlag#0)
         ` Créons un ensemble à partir de la sélection résultante
      NOMMER ENSEMBLE([uneTable];"A exclure")
      Si (Type application = 4D mode distant)
            ` UserSet est un ensemble local, copions-le dans un ensemble non-local
         COPIER ENSEMBLE ("UserSet";"SélectionUtilisateur") `  Copie par le réseau
            ` Appelons DIFFERENCE et passons 3 ensembles non-locaux en paramètres
         DIFFERENCE ("SélectionUtilisateur";"A exclure";"SélectionUtilisateur")
      Sinon
            ` Appelons DIFFERENCE
         DIFFERENCE ("UserSet";"A exclure";"SélectionUtilisateur")
      Fin de si
      EFFACER ENSEMBLE("A exclure")
      UTILISER ENSEMBLE("SélectionUtilisateur")
      EFFACER ENSEMBLE("SélectionUtilisateur")
   Fin de si

La même opération peut être effectuée avec le code suivant :

   TOUT SELECTIONNER ([uneTable])
      ` Permettons à l'utilisateur sélectionner des enregistrements
   MODIFIER SELECTION ([uneTable];*)
      ` Vérifions si l'utilisateur a sélectionné des enregistrements
   Si (Enregistrements dans ensemble("UserSet")>0)
         ` Recherchons les enregistrements à exclure
      CHERCHER([uneTable];[uneTable]aFlag#0)
      Si (Type application = 4D Client)
            ` Créons un ensemble local à partir de la sélection résultante
         NOMMER ENSEMBLE([uneTable];"$A Exclure") `  Copie du serveur vers le client
            ` Appelons DIFFERENCE et passons 3 ensembles locaux en paramètres
         DIFFERENCE ("UserSet";"$A Exclure";"UserSet")
      Sinon
            ` Créons un ensemble non-local à partir de la sélection résultante
         NOMMER ENSEMBLE([uneTable];"A Exclure")
            ` Appelons DIFFERENCE
         DIFFERENCE ("UserSet";"A Exclure";"SélectionUtilisateur")
      Fin de si
      EFFACER ENSEMBLE("$A Exclure")
      UTILISER ENSEMBLE("UserSet") `  Copie du client vers le serveur
   Fin de si 

Dans le premier exemple, trois ensembles sont créés et un seul est recopié à travers le réseau. Dans le second exemple, deux ensembles sont créés et les deux sont copiés sur le réseau. Vous pourrez donc choisir, en fonction de vos besoins, le type de solution qui vous convient le mieux.

4D Server et l'ensemble LockedSet

L'ensemble LockedSet est un ensemble process visible dans le process et sur le poste où il a été créé, ainsi que dans le trigger sur le poste serveur.

Référence

4D Server et le langage 4D, COPIER ENSEMBLE, Présentation des ensembles.


4D - Documentation   Français   English   German   Manuel de référence de 4D Server, Sommaire   Manuel de référence de 4D Server, Index   Retour   Précédent   Suivant