| |

COPY TO ARRAY
Copie les données à partir de champs non Mémo de la table en cours, remplace les
éléments d'un tableau existant et déplace le pointeur d'enregistrement sur le dernier
enregistrement copié.
Syntaxe
COPY TO ARRAY <tableau>[<portée>] [FOR <condition 1>][WHILE
<condition 2>][FIELDS <liste de champs>]
<portée>
Le nombre d'enregistrements à copier dans le tableau spécifié. RECORD <n>
identifie un enregistrement unique par son numéro d'enregistrement. Vous pouvez aussi
spécifier un signet pour les tables qui ne disposent pas de numéros d'enregistrements.
NEXT <n> identifie n enregistrements, en commençant par l'enregistrement en cours.
ALL spécifie tous les enregistrements. REST spécifie tous les enregistrements à partir
de l'enregistrement en cours jusqu'à la fin du fichier.
FOR <condition 1>WHILE <condition 2>
Détermine les enregistrements affectés par COPY TO ARRAY. FOR restreint COPY TO ARRAY
aux enregistrements qui satisfont à <condition 1>. WHILE commence le traitement à
l'enregistrement en cours et le poursuit avec chaque enregistrement suivant tant que
<condition 2> est vraie.
FIELDS <liste de champs>
Copie les données des champs de la liste dans l'ordre de <liste de champs>. Sans
FIELDS, dBASE copie tous les champs que le tableau peut contenir selon l'ordre des champs
dans la table en cours.
Description
|
Utilisez COPY TO ARRAY pour copier les enregistrements de la table en cours dans un
tableau existant. Pour copier les champs et les enregistrements spécifiés, utilisez
DECLARE Exemple[<variable 1>,<variable 2>], où
<variable 1> représente le nombre maximum d'enregistrements à copier et
<variable 2> le nombre maximum de champs à copier. Si vous utilisez DECLARE
Exemple[2,3], vous pouvez copier un maximum de trois champs à partir d'un maximum de deux
enregistrements. Pour copier les données de tous les champs et de tous les
enregistrements d'une table sans les champs Mémo, utilisez DECLARE
Exemple[RECCOUNT( ), FCOUNT( )].
Avec un tableau à deux dimensions, le premier indice est le nombre d'enregistrements à
copier, et le second indice est le nombre de champs à copier. Par exemple, si vous
émettez la commande DECLARE Test[2,3], COPY TO ARRAY Test peut copier trois champs de
deux enregistrements.
COPY TO ARRAY peut copier dans des tableaux à plus de deux dimensions
(multi-dimensionnel), mais elle n'utilise que les deux derniers indices. L'avant-dernier
indice de <tableau> détermine le nombre d'enregistrements que peut contenir le
tableau, et le dernier indice détermine le nombre de champs que le tableau peut contenir.
Par exemple, DECLARE Test[4,5,2,3] et DECLARE Test[2,3] créent toutes les deux un tableau
dans lequel COPY TO ARRAY copie trois champs de deux enregistrements.
Avec un tableau à une dimension, COPY TO ARRAY ne peut copier qu'un seul enregistrement.
Dans ce cas, le nombre d'éléments détermine le nombre de champs à copier. Par exemple,
si vous émettez DECLARE Test[5], COPY TO ARRAY copie les cinq premiers champs de
l'enregistrement en cours.
COPY TO ARRAY copie dans l'ordre d'index ou des numéros d'enregistrements, et à
l'intérieur de chaque enregistrement, dans l'ordre des numéros de champs à moins que
vous utilisiez l'option FIELDS pour spécifier l'ordre des champs à copier.
Si le nombre spécifié par le dernier indice du tableau est plus grand que le nombre de
champs copiés à partir de la table, les éléments de tableaux supplémentaires restent
initialisés à .F. ou à une valeur précédemment stockée. De même, si le nombre
spécifié par l'avant-dernier indice du tableau est plus grand que le nombre
d'enregistrements copiés à partir de la table, les éléments de tableaux
supplémentaires restent initialisés à .F. ou à une valeur précédemment stockée.
Avec cette commande XBase DML vous pouvez copier une table entière dans un tableau, à
l'exception des champs mémo. Vous pouvez préciser une liste des champs, vous pouvez
limiter les lignes à copier, etc
Pour faire le même genre de traitement, le travail est un peu plus grand, puisque l'OODML
ne comporte pas cette fonctionnalité. Cependant, cela peut être fait assez facilement.
Une méthode simple est de créer une petite routine avec deux boucles. L'exemple suivant
copie toutes les lignes et les champs d'une table dans un tableau:
Copier la totalité d'une table
nCols = form.rowset.fields.size |
nRows = form.rowset.count() |
aTable = new array( nRows, nCols ) |
for i = 1 to nRows |
for j = 1 to nCols |
if form.rowset.fields.type $ "MEMO, OLE" |
aTable[i,j] = form.rowset.fields.type |
endif |
aTable[ i, j ] = form.rowset.fields[ j ].value |
next |
next |
Copier un enregistrement
aCopieVersTableau= new array() |
for I = 1 to form.rowset.fields.size |
if form.rowset.fields[I].fieldName # '_dbaselock_' |
aCopieVersTableau.add(form.rowset.field[I].value) |
endif |
next |
// source : dbase.programming - De :
Jean-Pierre Martel
// Date : 2000/07/10 - Objet : Re:
About copy to array |
retour
Sources :
Aide Visual dbase V5.7
http://www.dbase.com/Knowledgebase/INT/xb2vdb7oodml/x2oodml.htm
Retour à l'accueil
Si vous voyez des erreurs, n'hésitez pas à le signaler.
Dernière modification : lundi 20 septembre 2010
© M.A.
|