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 :
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.
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.
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.
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.
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.
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.
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.
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.