|
|
|
|
|
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:
Code
|
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 |
Sources :
Aide Visual dbase V5.7
http://www.dbase.com/Knowledgebase/INT/xb2vdb7oodml/x2oodml.htm
Si vous voyez des erreurs, n'hésitez pas à le signaler.
Dernière modification : lundi 20 septembre 2010
© M.A.