Share via


SCATTER (Comando)

Copia datos del registro actual a un conjunto de variables o a una matriz.

SCATTER [FIELDS FieldNameList | FIELDS LIKE Skeleton
   | FIELDS EXCEPT Skeleton] [MEMO]
   TO ArrayName | TO ArrayName BLANK | MEMVAR | MEMVAR BLANK
   | NAME ObjectName [BLANK]

Parámetros

  • FIELDS FieldNameList
    Especifica los campos que desea transferir a las variables o a la matriz. Si omite FIELDS FieldNameList, se transferirán todos los campos. La lista de campos puede contener campos memo si sigue la lista de campos con la palabra clave MEMO. Los campos de tipo general e imagen siempre se pasan por alto en SCATTER, aunque incluya la palabra clave MEMO.

  • FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton
    Puede transferir selectivamente campos a variables o a una matriz si incluye la cláusula LIKE o EXCEPT, o ambas. Si incluye LIKE Skeleton, los campos que coinciden con Skeleton se transfieren a las variables o a la matriz. Si incluye EXCEPT Skeleton, se transfieren a las variables o a la matriz todos los campos, excepto los que coinciden con Skeleton.

    Skeleton acepta caracteres comodín. Por ejemplo, para transferir todos los campos que empiezan por las letras A y P a las variables o a la matriz, use:

    SCATTER FIELDS LIKE A*,P* TO myarray
    

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

    SCATTER FIELDS LIKE A*,P* EXCEPT PARTNO* TO myarray
    
  • MEMO
    Especifica que la lista de campos contiene uno o varios campos memo. De forma predeterminada, los campos memo se pasan por alto en SCATTER.

    Debe tener memoria suficiente para diseminar campos memo grandes en variables o en una matriz. Visual FoxPro genera un mensaje de error si no hay memoria suficiente. Si un campo memo es demasiado grande y no cabe en la memoria, ni ése ni los demás campos memo de la lista de campos se diseminarán. Si un campo memo no se disemina, su variable o elemento de matriz tomarán el valor de falso (.F.).

  • TO ArrayName
    Especifica a qué matriz se copia el contenido de los registros. SCATTER copia en orden secuencial el contenido de cada campo en cada elemento de la matriz, comenzando por el primer campo.

    Si la matriz tiene más elementos que el número de campos, los elementos de matriz sobrantes no se modificarán. Si la matriz no existe, o si tiene menos elementos que el número de campos, se creará automáticamente una nueva matriz. Los elementos de matriz tendrán el mismo tamaño y los mismos tipos de datos que los campos correspondientes.

  • TO ArrayName BLANK
    Crea una matriz con elementos vacíos que tendrán el mismo tipo y tamaño que los campos de la tabla.

  • MEMVAR
    Dispersa los datos en un conjunto de variables en lugar de distribuirlos en una matriz. SCATTER crea una variable para cada campo de la tabla y la llena con datos del campo correspondiente en el registro actual, asignando a la variable el nombre, el tamaño y el tipo del campo.

    Se crea una variable para cada campo en la lista de campos, si se incluye una lista de campos.

    Incluya delante del nombre de la variable el calificador M. para referirse a una variable que tenga el mismo nombre que un campo de la tabla actual.

    Precaución   No incluya TO con MEMVAR. Si incluye TO, Visual FoxPro creará una matriz llamada MEMVAR.

  • MEMVAR BLANK
    Crea un conjunto de variables vacías. A cada variable se le asignará el mismo nombre, tipo de datos y tamaño que su campo. Si se incluye una lista de campos, se creará una variable para cada campo de la lista de campos.

  • NAME ObjectName [BLANK]
    Crea un objeto cuyas propiedades tienen los mismos nombres que los campos de la tabla. Si no se incluye la palabra clave BLANK, los valores posibles de cada una de las propiedades del objeto son el contenido de los campos de la tabla. Si se incluye la palabra clave BLANK, las propiedades estarán vacías (encontrará en EMPTY( ) una descripción del contenido de las propiedades vacías, en función del tipo de campo correspondiente). No se crean propiedades para los campos de tipo general de la tabla.

    Para hacer referencia a una propiedad en un objeto que tiene el mismo nombre que una tabla abierta, escriba delante del nombre de la propiedad el calificador M. Por ejemplo:

    USE customer
    SCATTER NAME customer
    
    ? customer.company  && Returns the table value
    ? M.customer.company  && Returns the object property value
    

Observaciones

SCATTER y COPY TO ARRAY son parecidos. COPY TO ARRAY copia varios registros en una matriz, mientras que SCATTER copia solamente un registro en una matriz o en un conjunto de variables. SCATTER crea automáticamente la matriz o las variables en caso de que no existan.

Utilice GATHER para copiar variables o elementos de matriz a registros de tabla.

Ejemplos

Ejemplo 1

El ejemplo siguiente utiliza SCATTER para crear un conjunto de variables a partir de los campos de la tabla de comprobación. Después se asigna un valor a cada campo y se agrega un nuevo registro en blanco a la tabla. Los datos se copian a la tabla con el comando GATHER.

CREATE TABLE Test FREE ;
   (Object C(10), Color C(16), SqFt n(6,2))

SCATTER MEMVAR BLANK
m.Object="Box"
m.Color="Red"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE

Ejemplo 2

En este ejemplo se utiliza SCATTER junto con la cláusula NAME para crear un objeto con propiedades basadas en los campos de la tabla. Después se asignan valores a las propiedades del objeto y se agrega un nuevo registro en blanco a la tabla. Los datos se copian al nuevo registro con GATHER y la cláusula NAME.

CREATE TABLE Test FREE ;
   (Object C(10), Color C(16), SqFt n(6,2))

SCATTER NAME oTest BLANK
oTest.Object="Box"
oTest.Color="Red"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE

Vea también

ALINES( ) | APPEND FROM ARRAY | COPY TO ARRAY | DECLARE | DIMENSION | GATHER