Téléchargement des produits


Version anglaise


 


      

VADELIA

SADELIA

WADELIA

EADELIA


(I/B) (C/S)

(B) (S)

(I/B) (C/S)

(B) (C/S)


Paragraphe d'utilisation

DECLARATION


Syntaxe

INDEX_LISTE NomIndex NomListe SuiteZonesAccès


SuiteZoneAccès

SuiteZonesAccès, ZoneAccès | ZoneAccès Sens

Sens

*ASC | *DESC | Rien


Description

Cet ordre permet de déclarer un index sur une liste.

La liste ne peut être qu'une liste mémoire (et non une liste graphique, ou une propriété LISTE d'une variable de type OBJET_GRAPHIQUE)

Les zones d'accès de l'index ne peuvent pas être de type IMAGE.


Remarques :

Les index ne sont créés que lors de leur première lecture (voir les ordres L4G permettant de manipuler l'index).

Le fait de déclarer de nombreux index sur une liste dégrade légèrement les performances lorsque celle-ci est modifiée (ajout, suppression, etc), car les index sont mis à jour automatiquement. Il est donc conseillé de ne créer les index (via LIRE_ELT, LIRE_P_ELT ou LIRE_D_ELT) que lors de leur utilisation, puis de les supprimer  lorsqu'ils ne sont plus utilisés (via DETRUIRE_INDEX)

10 index au maximum peuvent être déclarés sur la liste.

L'élément lu par un index devient l'élément courant de la liste en affectant les valeurs aux variables qui composent la liste.

Les index ne transitent pas dans la gestion client/serveur. De ce fait, un index ne doit pas être lu alternativement en client/serveur (la lecture échouera). De plus, un index sera considéré comme n'étant plus à jour en début de service, si la liste sur laquelle il est déclaré est réceptionnée dans ce service.


Par exemple

LISTE MaListe Zone1 Zone2 Zone3 Zone4

INDEX_LISTE MonIndex1 MaListe Zone1

INDEX_LISTE MonIndex2 MaListe Zone1 *DESC

INDEX_LISTE MonIndex3 MaListe Zone3 *DESC, Zone2 *DESC



Remarques sur les listes paramètres :

Dans le cas d'une liste paramètre du programme, les index définis sur cette liste sont transmis, et sont mis à jour lors de la modification de la liste (d'où l'intérêt de les détruire dans le programme appelant s'ils sont devenus inutiles). Ils peuvent donc être manipulés en étant de nouveau déclarés dans ce programme : les zones d'accès doivent être les mêmes, même si leur nom est différent.

Exemple :

/* Programme n°1

LISTE MaListe Zon1 Zone2 Zone3 Zone4

INDEX MonIndex1 MaListe Zone2


APPELER Programme2 MaListe


/* Programme n°2

LISTE MaListeParam P2_Zone1 P2_Zone2 P2_Zone3 P2_Zone4


INDEX_LISTE NouvelIndex MaListeParam P2_Zone2

/* Cet index ne sera pas réellement nouveau, car la liste est un paramètre, et qu'elle possède déjà un index dont la définition est identique (même si le nom de la zone s'appelait Zone2 dans le premier programme, et P2_Zone2 ici, et que les index n'ont pas le même nom).


INDEX_LISTE MonIndex1 MaListeParam P2_Zone2 *DESC

/* Cet index sera réellement nouveau, car bien qu'il ait le même nom qu'un index déjà déclaré sur cette liste dans un autre programme, il n'existe encore aucun index avec cette définition d'accès (2eme zone de la liste de façon descendante).


PARAM MaListeParam


INSERER_ELT MaListeParam

/* Cette modification de la liste met à jour l'index défini sur la liste d'origine déclarée dans le programme n°1


Avertissement :

Avant la version 14.7.0 d'Adélia Studio, l'implémentation C/Windows des index de liste ne prenait pas en compte la casse pour les zones alphanumériques.
A partir de  la version 14.7.0, ce comportement a changé. Cependant, il est possible de revenir au comportement initial en fixant à la valeur "1" la clé WIN_INDEX_LIST_STRING_COMPARE_IGNORE dans le fichier adeliws.ini.

↑ Haut de page

  • Aucune étiquette