
SKIP
Déplace le pointeur d'enregistrement dans la zone de travail en cours ou
la zone de travail spécifiée.
Syntaxe
SKIP [<expN>] [IN <alias>]
<expN>
Le nombre d'enregistrements de déplacement du pointeur vers l'avant ou vers l'arrière
dans une table ouverte dans la zone de travail en cours ou la zone de travail spécifiée.
Si <expN> est évaluée à un nombre négatif, le pointeur d'enregistrement se
déplace vers l'arrière. SKIP sans argument <expN> déplace le pointeur d'un
enregistrement vers l'avant.
IN <alias>
Spécifie la zone de travail dans laquelle le pointeur d'enregistrement sera déplacé.
Vous pouvez spécifier un numéro de zone de travail (1 à 225), une lettre de zone de
travail (A à J) ou un nom d'alias. SKIP sans IN <alias> déplace le pointeur
d'enregistrement dans la zone de travail en cours.
SKIP permet de déplacer le pointeur d'enregistrement par rapport à sa
position en cours. Pour une table non indexée, le pointeur se déplace du nombre
d'enregistrements spécifié. Pour une table indexée, le pointeur saute le nombre
d'enregistrements spécifié selon l'ordre de l'index.
Si la commande SKIP est émise lorsque le pointeur est sur le dernier enregistrement d'une
table, EOF( ) renvoie .T. L'émission de commandes SKIP supplémentaires renvoie une
erreur. De même, si la commande SKIP -1 est émise lorsque le pointeur se trouve sur le
premier enregistrement du fichier, BOF( ) renvoie .T., et une commande SKIP négative
ultérieure renvoie une erreur.
SKIP IN <alias> vous permet d'avancer le pointeur dans une autre zone de travail
sans la sélectionner préalablement avec la commande SELECT.
L'équivalent OODML est la méthode next() de l'ensemble de lignes. Cette
méthode accepte un paramètre numérique, qui peut être une valeur positive ou
négative.
form.rowset.next() // avance d'un
enregistrement |
form.rowset.next( 5 ) // avance de cinq enregistrements |
form.rowset.next( -1 ) // recule d'un enregistrement |
form.rowset.next( -5 ) // recule de cinq enregistrements |
Vous devez noter qu'aucune vérification n'est faite automatiquement pour
voir si vous tentez d'aller au-delà de la "endOfSet "- vous devez le vérifier
dans votre code ... (Voir BOF() EOF() ).
En outre, la navigation de toutes sortes fera une sauvegarde automatique dans une ligne
tampon. C'est à dire, que si l'utilisateur a effectué des modifications dans un
formulaire dont des contrôles sont liés à des données (datalinked), et qu'il change
d'enregistrement, alors les modifications apportées seront automatiquement sauvegardés
...
Dans l'exemple suivant, SKIP permet de déplacer le pointeur dans les
enregistrements de la table pour afficher ou imprimer une liste des champs
sélectionnés :
SET SAFETY OFF |
SET TALK OFF |
USE PAYS EXCLUSIVE |
INDEX ON PNB TAG PNB |
? CENTER("Liste des pays-d'abord les plus bas PNB") // fonction dBase 5 |
? |
DO WHILE .NOT. EOF( ) |
? Nom AT 2, PNB AT 20, Capital AT 40 |
SKIP |
ENDDO |
CLOSE ALL |
SKIP accompagné d'une expression négative peut être utilisée pour accomplir l'inverse
de l'exemple précédent :
USE PAYS EXCLUSIVE |
INDEX ON Population TAG Pop |
? CENTER("Liste des pays-d'abord les plus nombreux") // fonction dBase 5 |
? |
GO BOTTOM |
DO WHILE .NOT. BOF( ) |
? Nom AT 2, Population AT 20, Capital AT 40 |
SKIP-1 |
ENDDO |
CLOSE ALL |
SET TALK ON |
SET SAFETY ON |
RETURN |
Bien
comprendre
|
Comme indiqué, SKIP accepte toute valeur numérique (même décimale)
sans broncher. Comme aucun contrôle n'est effectué, si le nombre spécifié est trop
grand par rapport au nombre d'enregistrement de la table, le pointeur d'enregistrement se
positionne simplement, en fonction du sens de déplacement, en début ou en fin de
fichier, sans vous avertir que le début ou la fin de fichier est atteinte.
SKIP accepte aussi la valeur 0, dans ce cas le pointeur ne bouge pas.
retour
Sources :
Aide Visual dbase V5.7
http://www.dbase.com/Knowledgebase/INT/xb2vdb7oodml/x2oodml.htm par Ken Mayer
Aide dBase Plus 2.6.0
Retour à l'accueil
Si vous voyez des erreurs, ou souhaitez apporter des compléments, n'hésitez pas à le signaler.
Dernière modification : samedi 07 août 2010
© M.Abraham.
|