4D Server et les 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

version 6.0.2


Comme décrit dans la section Présentation des ensembles du manuel Langage de 4e Dimension, vous pouvez créer et utiliser des ensembles interprocess, process et locaux :

Ensembles process : Un ensemble process n'est "visible" que par le process dans lequel il a été créé. Les ensembles process sont effacés à la fin de l'exécution de la méthode process. Le nom des ensembles process ne comporte aucun préfixe particulier.

Ensembles interprocess : Un ensemble 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 locaux/clients : Le nom d'un ensemble 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.

Avec 4D Server, les ensembles interprocess et process sont maintenus sur le poste serveur, alors que les ensembles locaux sont maintenus sur les postes clients.

Conseil : Généralement, il est préférable d'utiliser des ensembles process ou interprocess car leur manipulation est optimisée pour l'architecture client/serveur.

4D Server et les commandes de gestion des ensembles


Ce paragraphe décrit le comportement des commandes de gestion des ensembles dans l'architecture client/serveur, lorsqu'elles sont exécutées sur le poste client :

ENSEMBLE VIDE

L'ensemble vide est créé sur le poste serveur. Un ensemble local est alors copié par le réseau depuis le serveur vers le client. Un ensemble process ou interprocess reste et est maintenu sur le poste serveur.

NOMMER ENSEMBLE

CREER ENSEMBLE SUR TABLEAU

L'ensemble est créé sur le poste serveur. Un ensemble local est alors copié par le réseau depuis le serveur vers le client. Un ensemble process ou interprocess reste et est maintenu sur le poste serveur.

UTILISER ENSEMBLE

Un ensemble local est copié en premier lieu par le réseau du poste client vers le poste serveur, puis est utilisé sur le poste serveur pour modifier la sélection de la table. Un ensemble process ou interprocess est utilisé localement, sur le poste serveur, pour modifier la sélection de la table.

STOCKER ENSEMBLE

Un ensemble local est stocké localement, sur le poste client.

Un ensemble process ou interprocess est copié en premier lieu par le réseau du poste serveur vers le poste client puis est stocké en local sur le poste client.

CHARGER ENSEMBLE

Un ensemble local est chargé du disque du poste client.

Un ensemble process ou interprocess est d'abord chargé du disque du poste client puis est copié par le réseau du poste client vers le poste serveur.

EFFACER ENSEMBLE

ADJOINDRE ELEMENT

ENLEVER ELEMENT

Appartient a ensemble

Enregistrements dans ensemble

Ces cinq commandes accèdent à un ensemble local sur le poste client. Avec un ensemble process ou interprocess, une requête est envoyée par le réseau au poste serveur afin d'obtenir l'information ou d'effectuer l'action.

DIFFERENCE

INTERSECTION

REUNION

Ces commandes nécessitent que les trois ensembles passés en paramètres résident sur le même poste. Par conséquent, tous les ensembles doivent être locaux, ou aucun d'entre eux ne doit l'être.

COPIER ENSEMBLE

A l'aide de COPIER ENSEMBLE, vous pouvez copier tout ensemble dans un autre. Par exemple, vous pouvez copier un ensemble local dans un ensemble interprocess ou process. Dans ce cas, l'ensemble est recopié par le réseau du poste client vers le poste serveur.

4D Server et l'ensemble UserSet


4D Client 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]aFlag#0)
         ` Créons un ensemble à partir de la sélection résultante
      NOMMER ENSEMBLE([uneTable];"A exclure")
      Si (Type application = 4D Client)
            ` 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 créé et maintenu 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