FILTER |
Filterpermet de sélectionner les enregistrements d'une table précédemment ouverte et de préciser une clé de parcours.
Filter classe [ Where_exp ] [ Order_by_exp ]
Elément | Description | Restrictions |
Abréviation d'un fichier ouvert | le fichier doit déjà être ouvert | |
expression_de_sélection Voir Where | Aucune. | |
expression_de_clé Voir Order | Aucune. |
# Edition des commmandes client entre 2 dates
Filter [CCL] Where DATCCL >= DATDEB and DATCCL <= DATFIN
For [CCL]CLICCL(1)
For [CCL]CLICLL(2)
...
Next
Next
# Dans le fichier des commandes client, on a traité une commande
# et on veut lire la suivante - si elle existe.
Filter [CCL] Where CODCLIF = [L]CLICUR and NUMCCL > [L]NUMCUR
Raz [L]OK
For [CCL]
[L]OK = 1 : Break
Next
If [L]OK
# une autre commande existe pour ce client
Else
# pas d'autre commande
Endif
# Annulation des enregistrements suivant un certain critère
Filter [ABR] Where evalue([L]CRITERE)
Delete [ABR]CLE(1) >= "" : # CLE(1) étant alphanumérique
Filter [ABR] : # annulation de la sélection
Filteren association avec la clause Where permet de sélectionner les enregistrements d'une table préalablement ouverte. Ceci permet d'accélérer les accès aux données de cette table.
En association avec la clause Order By, on peut en plus changer de clé d'accès. Cette nouvelle clé pourra être soit une clé déjà existante, soit une nouvelle clé définie dans la clause Order By.
Si la table a été ouverte avec une clause Where, Filter vient renforcer la sélection en faisant un "et logique" avec la condition exprimée à l'ouverture de la table . Une telle ouverture pouvant être faite par les ordres File et Link. Il en est de même à l'intérieur d'une boucle For ...Next.
Si une instruction Filter vient après une autre instruction Filter sur une même classe, elle annule et remplace la précédente. On se servira donc de l'instruction Filter [abv] sans autre argument pour annuler tout éventuel filtre.
Il y a un niveau de localité attaché aux fichiers ouverts par Local File. Par contre, il n'y en a pas attaché à l'ordre Filter. Ainsi, si cet ordre apparaît dans un sous programme sur une table précédemment ouverte (et - bien sûr - non réouverte dans le sous-programme) , il sera encore actif au retour dans le traitement appellant.
Après Filter, la variable [G]currind vaut toujours 1.
En terme de performances, il est équivalent de mettre la sélection dans l'ouverture de la table ou de le faire par Filter. Cette dernière syntaxe apporte plus de souplesse à l'écriture des traitements puisqu'on peut à tout moment la changer ou l'annuler.
Les restrictions générales concernant les clauses Where et Order By s'appliquent pleinement quand elles sont utilisées avec Filter.
ERCLAS( 7) | Abréviation non trouvée |
WHERE -ORDER - FILE - FOR - TRBEGIN- LINK - READ - DELETE - UPDATE - CURRIND
SOMMAIRE
Adonix X3(r) L4G |