SEL_TABLE

Description

Cette action est appelée en tout début du modèle, avant l'affichage de la fenêtre de sélection.

Modèle

Sélection sur table

Utilisation

Elle sert principalement à construire la fenêtre de sélection. Nous avons deux possibilités pour préparer cette fenêtre :

   soit faire appel à la fenêtre de sélection principale définie dans l'OBJet (ceci est faisable si la table à explorer est gérée par un OBJet)

   soit construire totalement cette fenêtre de sélection.

Elle peut servir à interrompre le traitement en positionnant OK = 0.

Elle peut servir à modifier le nombre d'éléments à afficher dans la fenêtre de sélection, en modifiant la variable adxmxl. Il n'est pas nécessaire de la sauvegarder, le superviseur s'en charge.

cas d'appel de la fenêtre de sélection de l'OBJet

C'est le cas le plus simple. On utilise les paramètres de l'OBJet pour afficher la fenêtre principale de cet OBJet. Les variables à renseigner sont les suivantes :

   OBJET : Char, longueur 5.
Elle permet d'identifier l'OBJet, afin de récupérer les informations nécessaires à l'affichage de la fenêtre.
Cette variable est à renseigner obligatoirement.

   SUPP : Char, longueur 30.
Lorsque l'OBJet a 2 éléments de clé, elle permet de filtrer les enregistrements de la table sur une valeur du 1er champs de clé.
Donc, si l'on veut ce filtre, on renseigne cette variable, par la valeur du 1er champs de clé.

   OPTIONS : Char, longueur 10.
Elle permet de filtrer les enregistrements sur des filtres pré-définis dans l'OBJet. On y renseigne donc les codes de "filtres de sélections" définis dans l'OBJet que l'on désire appliquer.
En ajoutant le caractère "#", on filtre les enregistrements actifs ( c'est à dire ceux dont le champ [F]ENAFLG=2 ) et on exécute l'action FILTRE de l'OBJet.
En ajoutant le caractère "|", on trie les enregistrements sur le 1er champ de clé puis sur le 2ème. 
En ajoutant le caractère "$", on ouvre la table de l'OBJet avec l'abréviation du dictionnaire, même si celle-ci est déjà ouverte. Cela permet d'éviter des filtres résiduels ou un repositionnement parasite de la classe [F].

La pagination est automatiquement prise en compte par le Superviseur.

cas de création d'une fenêtre de sélection

Dans ce cas, la fenêtre est à construire, complètement. On devra ouvrir ( si elle ne l'est pas déjà ) la table sur laquelle est basée la sélection. On devra, en plus, préciser que cette classe [F] est la classe, par défaut. Nous sommes limités à 16 colonnes dans la construction de la fenêtre. Pour définir la fenêtre, nous avons à disposition les variables suivantes :

   NBCOL : Integer
C'est le nombre de colonnes à afficher dans la fenêtre. Le nombre de colonnes est limité à 16.

   TIT(NBCOL) : Char, longueur 30, dimensionné.
C'est le titre de la colonne. C'est à renseigner pour chaque colonne prévue dans la fenêtre.

   COL(NBCOL) : Char, longueur 50, dimensionné.
C'est le nom du champ à afficher dans la colonne. C'est à renseigner pour chaque colonne prévue dans la fenêtre.

   TIT(0) : Char, longueur 30.
C'est le titre de la fenêtre.

   DEFPAG=1 : le Superviseur prends en charge la pagination.

Dans les deux cas de figure :

Il est possible de modifier les valeurs par défaut des variables suivantes :

   ORDRE : Char, longueur 250.
Elle permet d'indiquer l'ordre de tri des enregistrements.
Lorsqu'on est sur une fenêtre issue d'un OBJet, le superviseur trie, sur la clé précisée sur l'onglet "sélection" sinon il trie sur la clé primaire. 
Lorsque la clé n'est pas précisée dans l'onglet "sélection" de l'OBJet, le superviseur prend donc la clé primaire. Lorsque cette clé primaire est composée de deux éléments, le superviseur trie, par défaut, sur le dernier élément ou bien sur l'ensemble de la clé si on précise OPTIONS="|" dans cette action.

Lorsqu'on est sur une fenêtre construite, le superviseur trie, par défaut, les enregistrements sur la première colonne déclarée dans la fenêtre.

Cette variable nous donne la possibilité de trier les enregistrements d'une autre façon. On indique dans cette variable le nom d'un ou plusieurs champs appartenant à la table mais pas forcément à la fenêtre. Les nom de champs sont séparés entre eux par le caractère ";".
Exemple : ORDRE = "[F:ADI]NUMTAB;[F:ADI]CODE"

   SENS : Integer
Elle permet d'indiquer le sens de tri des enregistrements.
Par défaut, le tri est ascendant. On précisera la valeur 2 dans cette variable pour avoir un tri descendant.

   START : Char, longueur 250.
Elle permet d'identifier la colonne qui alimentera le champ duquel la fenêtre a été activée, lorsque l'utilisateur aura fait son choix.
Lorsqu'on est sur une fenêtre issue d'un OBJet,  le superviseur prend par défaut, le champ de la clé primaire. Pour une clé à 2 composantes, le superviseur prend par défaut  le deuxième élément de clé sinon il prend le premier lorsqu'on précise OPTIONS="|" dans cette action.
Lorsqu'on est sur une fenêtre construite, le superviseur prend par défaut, la première colonne déclarée dans la fenêtre.
Cette variable nous donne la possibilité de prendre une autre colonne. On indique dans cette variable le nom d'un champ appartenant  à la fenêtre.

   EXPSTART : Char, longueur 250.
Elle permet d'indiquer l'enregistrement sur lequel sera positionné le curseur.
Par défaut, le curseur sera positionné sur le premier enregistrement dont le champ identifié par la variable START est supérieure ou égal à la valeur saisie. Cependant, il est possible d'indiquer le placement du curseur par sa propre expression. Syntaxe identique que pour la variable CRITERE.

   CRITERE (1..7) : Char, longueur 250.
ces champs permettent d'indiquer un filtre de sélection des enregistrements de la table.

   CRITCAR  : Char, longueur 250.
ce champ permet de positonner le curseur sur l'élément indiqué. Syntaxe identique que pour la variable CRITERE.

   SIZLIG & SIZCOL : integer
Elles permettent de modifier la taille de la fenêtre qui est de 10 lignes et 60 colonnes par défaut.
Ces 2 variables sont initialisées de la façon suivante : SIZLIG = 80 & SIZCOL = 240.
SIZLIG indique un nombre de lignes exprimé en 1/8 de ligne.
SIZCOL indique un nombre de colonnes exprimé en 1/4 de colonne.

Exemple :
# fenêtre de sélection s'appuyant sur la description de l'objet ITS, sur la quelle on indique :
# le filtre de sélection CRITERE, l'ordre de tri ORDRE, le champ qui sera récupéré en retour de la sélection START

$S_ITV
If
clalev([F:ITS])=0:LocalFileITMSALES:Endif
If
clalev([F:ITM])=0:LocalFileITMMASTER:Endif
If
clalev([F:ATZ])=0:LocalFileATABZON:Endif
Local
CharCODFIC:CODFIC = "ITMSALES"
Link
[ITS] With [ITM]ITM0=[ITS]ITMREFAs [KITS]
Default
File [KITS]
ORDRE = 'ITMREF'
START = 'ITMREF'
CRITERE='[F:ITM]ITMSTA=1 & [F:ITM]ITMREF>="'+VALEUR+'"'
OBJET="ITS"
Return