Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

SCR/AL1 - TOME II. Les Objets

12. MPAGE

12.2 ISAM et écran d'une MPAGE

12.2.1 ISAM

Ce paramètre indique l'ISAM édité par la MPAGE et l'index suivant lequel les records seront classés par défaut.

L'index peut être modifié par l'utilisateur en choisissant, soit par le MENU de la APG, soit par les champs de la APG, soit encore par un champ MENU de la APG ou de la SPG, un autre index.

Les valeurs des champs de la APG servent à déterminer le record de départ de la recherche et de l'affichage (uniquement les champs liés à ceux de l'INDEX de recherche).

Optionnellement, un des mots-clés suivants peut être placé à côté de l'INDEX et indique l'ordre de recherche dans l'ISAM :

Certaines de ces options ne sont pas disponibles dans tous les systèmes de fichiers.

Par défaut, le mot-clé est GE.

12.2.2 APG

La APG est la PAGE qui encadre la MPAGE lors de l'affichage. Cette PAGE contient les informations sur les valeurs des champs de départ de la recherche. Lors des déplacements sur les LPG de la MPAGE, les valeurs des champs de la MPAGE deviennent celles du record sur lequel on se trouve (sauf si la APG est identique à la SPG).

Cette PAGE doit recouvrir dans l'écran l'ensemble des LPG. Elle contiendra éventuellement des DRAWS pour séparer les champs des LPG.

Les champs de la APG contiennent en général les champs des INDEX de recherche possibles : lors du début de l'édition de la MPAGE, ces champs seront indiqués en video inverse de façon à permettre à l'utilisateur de choisir l'INDEX de recherche. Si la APG possède une définition de MENU, ce menu contiendra les descriptions des INDEX de recherche et sera utilisé pour offrir le choix à l'utilisateur.

Optionnellement, la APG peut contenir un MENU qui sera alors utilisé pour le choix de l'INDEX à la place des champs de la APG. Ce MENU doit contenir un texte par index de recherche possible. Le numéro d'OPTION de ces textes dans le MENU doit correspondre au numéro de l'INDEX dans l'ISAM (la première option correspond à l'ordre du fichier). Certaines OPTIONS de ce MENU peuvent être OFF pour éviter que les INDEX correspondants à ces positions ne puissent être choisis.

Deux champs MENU spéciaux de la APG peuvent être définis : ces champs auront comme attribut FLD_IDX ou FLD_COND. Le premier est un menu semblable à celui décrit ci-dessus : il indique l'index de recherche.

Le second (FLD_COND) indique le sens de la recherche : GE, LE, EQ, EQ1, etc. Par exemple :

    FIELD NAME order FLD_COND MENU amx_order {
Title "Ordre"
OPTION "GE (ordre croissant)"
OPTION "LE (ordre décroissant)"
OPTION "EQ (égalité des index)"
OPTION "EQ1 (égalité du premier champ)"
OPTION "EQ2 (égalité des 2 premiers champs)"
OPTION "EQ3 (égalité des 3 premiers champs)"
OPTION "EQ4 (égalité des 4 premiers champs)"
OPTION "EQ5 (égalité des 5 premiers champs)"
}

Ces deux champs spéciaux de la APG permettent donc à l'utilisateur de définir lui-même l'index et la condition de recherche. A noter que SCR_LE permet d'afficher les records dans l'ordre inverse.

Enfin, la APG peut ne contenir aucun champ de l'index d'affichage. Dans ce cas, l'INDEX est celui précisé après le mot clé ISAM.

Un autre champ spécial peut être défini dans la APG. Celui-ci permet de visualiser les lectures dans la base de données. C'est notamment utile lorsqu'un SCAN long peut donner l'immpression d'un plantage du système. On mettra comme mot-clé FLD_COUNT dans un champ de type NATURAL ou STRING de la APG. A chaque lecture dans l'ISAM, ce champ sera modifié:

La variable globale MP_COUNT_FREQ permet de n'afficher les champs FLD_COUNT de type STRING qu'une fois toutes les MP_COUNT_FREQ lectures. Par défaut MP_COUNT_FREQ est fixé à 10.

Screen dans la APG

Lorsqu'un SCREEN est présent dans la définition de l'APG de la MPAGE, on peut, pour faciliter le placement des LPG, utiliser la méthode suivante. On place dans le screen %nom_du_champ_lpg à l'endroit de placement des champs désirés de la LPG. L'exemple suivant éclaire cette possibilité :

    APG jvp_bes {
Center
...
SCREEN {
+======================= LeveringsBons ================================+
| |
|----------------------------------------------------------------------|
| Klant $KLANUM *KLANAAM |
| *KLINSTITUUT *KLTEL *KLBTW |
| Bonnummer $BONNR Taal:*T S:*SO C:*PR Munt:*MK Kort F/L:*F /*A|
| Vertegenwoordigers $VERT1 / $VERT2 |
| Datum Levering $DATLEV Korting Faktuur $KORTFAK |
| Leveringsadres $LEVADR Code Faktuur $CODFAK *X |
|Art |Aant.| Omschrijving Krt.|Prijs |
|----------------------------------------------------------------------|
|%ART %AAN %OMSNED %KR %PRIJS |
| |
| |
| |
| |
| |
| |
|----------------------------------------------------------------------|
|*OPM TOT BON *TOT |
| Korting Aktief *KO |
+======================================================================+
}
...
}

LPG jvlpg_bes {
NAME_MEM
DEFAULTS {ISAM jvf_besl blue line 0}
FIELD name art ISF artnum CODE jvf_art artnum
FIELD name omsned ISAM jvf_art omsned
FIELD name aan ISF aantal
FIELD name kr nc 4 ISF kortart
FIELD name prijs ISF prijs
FIELD name b ISF backo upper
FIELD name ga ISF ga hidden
FIELD name artgrat ISAM jvf_art artnum_g hidden
}

%ART, %AAN, etc font référence aux champs de la LPG.

Dans cette LPG, les champs référencés dans le APG doivent être nommés (ISF ne suffit pas), sans quoi le lien serait impossible.

C'est à la fin de la compilation de la MPAGE que le positionnement correct des champs de la LPG sera effectué en fonction de ce qui se trouve comme champs %nom dans la APG. Il faut donc pour bien faire que les noms des champs soient connus à ce moment : pour ce faire, il suffit de spécifier NAME_MEM dans la définition de la LPG.

12.2.3 LPG

La LPG est la PAGE qui contient les informations des records affichés dans le corps de la MPAGE, ou du moins la partie visible en permanence.

Elle peut éventuellement contenir plusieurs lignes.

12.2.4 BPG ou BC

La BPG est la PAGE qui permet de visualiser un record entièrement. Elle est utilisée non seulement pour voir le contenu complet d'une record, mais aussi pour créer un nouveau record.

Cette PAGE apparaît lorsque ENTER est pressé sur une LPG (modification ou visualisation) ou lorsque INS est pressé (pour créer un nouveau record).

La BPG peut éventuellement être égale à la LPG, auquel cas cette dernière est utilisée pour la création d'un nouvel enregistrement.

12.2.5 NL

Fournit le nombre de lignes des LPG. Par défaut, cette valeur vaut 1. Si les little pages (LPG) couvrent plus d'une ligne, il faut le spécifier. Cette valeur, multipliée par NPG indique le nombre de lignes total réservé dans la APG aux LPG.

On peut avoir des LPG de plus d'une ligne, mais spécifier NL 1 : dans ce cas les LPG se recouvriront.

12.2.6 LINE

Indique la ligne dans l'écran (et pas dans la APG) où doit apparaître la première LPG.

12.2.7 NPG

Indique le nombre de LPG que l'on veut voir simultanément dans l'écran. L'espace requis doit être prévu au niveau de la APG qui ne s'adapte pas automatiquement.

Cette valeur, multipliée par NPG indique le nombre de lignes total réservé dans la APG aux LPG.

12.2.8 VIEW_FN

Lorsque différentes VIEW sont définies pour une MPAGE, il faut pouvoir, pour chaque record, déterminer la vue à utiliser, que ce soit pour la LPG, la BPG ou l'ISAM de définition.

La VIEW_FN est utilisée à cette fin. Ce sera toujours une fonction C qui retournera le numéro de la vue à exploiter pour l'affichage (LPG) ou l'édition (BPG ou BC) d'un enregistrement.

Une valeur de retour de 1 correspond à la vue VIEW 1, 2 à VIEW 2, etc. Pour toute autre valeur, les définitions par défaut, (LPG, BPG ou BC, ISAM) seront utilisées.

La VIEW_FN peut exploiter les valeurs du record de l'ISAM par défaut (celui défini par le mot-clé ISAM dans la définition de la MPAGE). Par exemple, pour distinguer deux records selon le chiffre d'affaire, on écrira :

    VIEW_FN {C_FN return((is_cli_CHAFF < 500000L) ? 0 : 1)}

La vue par défaut sera utilisée si le chiffre d'affaire est inférieur à 500000 et VIEW 1 s'il est supérieur à cette valeur. Les deux vues pourraient dans ce cas par exemple se distinguer uniquement au niveau de la couleur de la LPG.

12.2.9 VIEW

On peut souhaiter que l'affichage des enregistrements à l'aide d'une MPAGE varie en fonction du contenu des enregistrements eux-mêmes. Ainsi, dans une même portefeuille financier, on peut avoir à la fois des obligations, des options, des actions, etc.

Il s'agira donc d'afficher ces informations dans des LPG différentes et de les éditer dans des BPG différentes. De plus, même si physiquement la base de données est la même, les champs définis dans l'ISAM, hormis ceux servant d'index, peuvent être vus totalement différemment selon le cas.

Entre le cas standard et ce cas complexe, toute une gamme de situations peut être imaginée: des produits que l'on veut différencier selon le code TVA en les affichant dans des couleurs distinctes, des dossiers qui sont clôturés ou ne le sont pas et doivent faire apparaître des informations différentes, etc.

Pour préciser les différents affichages des enregistrement, on définira:

La syntaxe de définition d'une VIEW est :

    VIEW n {
[LPG page_defn]
[BPG page_defn | BC bc_defn]
[ISAM isam_defn]
}

Le numéro (n) de la VIEW l'identifie. Ce numéro sera retourné par la VIEW_FN et la VIEW_CREATE_FN.

La LPG est la PAGE qui remplace la LPG par défaut. De même pour le BPG ou le BC qui seront utilisés pour l'édition ou la visualisation d'un enregistrement.

L'ISAM n'est jamais ouvert: il ne sert qu'à définir une découpe en champs différente de celle de l'ISAM par défaut.

Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be