Compartir a través de


COPY TO ARRAY (Comando)

Copia a una matriz los datos de la tabla seleccionada actualmente.

COPY TO ARRAY ArrayName   
[FIELDS FieldList   | FIELDS LIKE Skeleton   | FIELDS EXCEPT Skeleton]
   [Scope] [FOR lExpression1] [WHILE lExpression2]   [NOOPTIMIZE]

Parámetros

  • ArrayName
    Especifica la matriz a la que se deben copiar los datos de la tabla.

  • FIELDS FieldList
    Especifica que solamente se copian a la matriz los campos especificados en FieldList. Si se omite la cláusula FIELDS FieldList, todos los campos se copiarán a la matriz si ésta tiene suficientes columnas.

  • FIELDS LIKE Skeleton
    Especifica que los campos que coinciden con la estructura de campos Skeleton se copian a la matriz.

  • FIELDS EXCEPT Skeleton
    Especifica que todos los campos excepto los que coinciden con la estructura de campos Skeleton se copian a la matriz.

    La estructura de campos Skeleton admite caracteres comodín. Por ejemplo, para especificar que todos los campos que comiencen con las letras A y P se copien a la matriz, utilice la instrucción siguiente:

    COPY TO ARRAY aMyArray FIELDS LIKE A*,P*
    

    Puede combinar la cláusula LIKE con la cláusula EXCEPT:

    COPY TO ARRAY aMyArray FIELDS LIKE A*,P* EXCEPT PARTNO*
    
  • Scope
    Especifica el intervalo de registros que se copian a la matriz. Sólo se copiarán los registros comprendidos en ese intervalo. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST.

    Para obtener más información acerca de las cláusulas de alcance, vea el tema Cláusulas de alcance.

    El alcance predeterminado para COPY TO ARRAY es ALL (todos los registros).

  • FOR lExpression1
    Especifica que solamente se copian a la matriz los registros que satisfacen la condición lógica lExpression1. Incluir FOR permite copiar condicionalmente diversos registros a la matriz para desechar los registros no deseados.

    Rushmore optimizará una consulta COPY TO ARRAY que incluya FOR lExpression1 si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

    Si desea obtener más información acerca de las expresiones optimizables con Rushmore, vea SET OPTIMIZE y Usar Rushmore para agilizar el acceso a los datos.

  • WHILE lExpression2
    Especifica una condición por la cual los registros se copian a la matriz siempre y cuando la expresión lógica lExpression2 dé como resultado verdadero (.T.).

  • NOOPTIMIZE
    Desactiva la optimización Rushmore de COPY TO ARRAY. Si desea obtener más información, vea SET OPTIMIZE y Usar Rushmore para agilizar el acceso a los datos.

Observaciones

COPY TO ARRAY y SCATTER son similares. COPY TO ARRAY copia múltiples registros a una matriz, mientras que SCATTER copia un único registro a una matriz o a un conjunto de variables de memoria. Tanto COPY TO ARRAY como SCATTER crean una nueva matriz si no existe una matriz con el nombre especificado.

Para copiar un único registro a una matriz, puede especificar una matriz de una dimensión. La matriz de una dimensión debe tener el mismo número de elementos que el número de campos de la tabla, sin contar los campos memo. Los campos memo se pasan por alto en COPY TO ARRAY.

Si especifica una matriz de una dimensión, el primer campo de un registro se almacenará en el primer elemento de la matriz, el segundo campo se almacenará en el segundo elemento y así sucesivamente. Si la matriz de una dimensión tiene más elementos que campos hay en la tabla, los elementos sobrantes permanecerán sin cambios. Si la matriz tiene menos elementos que campos hay en la tabla, los campos sobrantes se pasarán por alto.

Para copiar múltiples registros o una tabla entera a una matriz, utilice una matriz de dos dimensiones. El número de filas de la matriz es el número de registros que puede contener y su número de columnas es igual al número de campos que se pueden incluir en ella.

Cada registro se almacena en una fila de la matriz y cada campo del registro se almacena en una columna. Para cada registro, el primer campo se almacena en la primera columna de la matriz, el segundo campo se almacena en la segunda columna y así sucesivamente. Si el número de columnas de la matriz es mayor que el de campos de la tabla, las columnas restantes permanecerán sin cambios. Si el número de columnas de la matriz es menor que el número de campos de la tabla, los campos restantes no se almacenarán en la matriz.

Cada fila sucesiva de la matriz se llena con el contenido del siguiente registro de la tabla. Si la matriz tiene más filas que registros tiene la tabla, las filas restantes permanecerán sin cambios. Si la matriz tiene menos filas que registros tiene la tabla, los registros restantes no se almacenarán en la matriz.

Es posible copiar datos desde matrices a nuevos registros de tablas con APPEND FROM ARRAY. También es posible copiar datos de una matriz o un conjunto de variables de memoria a registros de una tabla mediante GATHER.

Ejemplo

En el ejemplo siguiente, se abre la tabla customer. Luego se crea una matriz de dos dimensiones y se copian los tres primeros registros de customer a la matriz. DISPLAY MEMORY muestra los datos almacenados en la misma.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table

DIMENSION gaTemp(3,10)
COPY NEXT 3 TO ARRAY gaTemp
DISPLAY MEMORY LIKE gaTemp

Vea también

APPEND FROM ARRAY | DECLARE | DIMENSION | GATHER | PUBLIC | SCATTER | STORE