AFIELDS ( )*

 Llena matrices con la estructura del fichero actual de base de datos.

 Sintaxis

     AFIELDS([<aNombresCampo>], [<aTipos>],

        [<aAnchuras>], [<aDecimales>]) –> nCampos

 Argumentos

<aNombresCampo> es la matriz que se va a llenar con los nombres de campo. Todos sus elementos son cadenas de caracteres.

 <aTipos> es la matriz que se va a llenar con los tipos de campo de <aNombresCampo>. Todos sus elementos son cadenas de caracteres.

<aAnchuras> es la matriz que se va a llenar con las anchuras de los campos de <aNombresCampo>. Todos sus elementos son de tipo numérico.

<aDecimales> es la matriz que se va a llenar con el número de decimales definido para los campos de <aNombresCampo>. Todos los elementos son de tipo numérico. Si el tipo del campo no es numérico, el elemento de <aDecimales> será cero.

Devuelve

AFIELDS() devuelve el número de campos o la longitud del argumento de matriz más corto, el que sea menor de los dos. Si no se especifican argumentos o no se está utilizando un fichero de base de datos en el área de trabajo actual, AFIELDS() devuelve cero.

Descripción

AFIELDS() es una función de matrices que llena una serie de matrices (de atributos de estructura) con la estructura del fichero de base de datos actualmente abierto, un elemento de cada matriz por campo. AFIELDS() actúa como ADIR(), que llena una serie de matrices existentes con información. Para utilizar AFIELDS(), primero debe crear las matrices que van a contener la información de la estructura de la base de datos. Todas las matrices deben tener el mismo número de elementos que de campos (es decir, FCOUNT()). Una vez que se hayan creado las matrices de atributos de estructura, puede invocar AFIELDS() para rellenar estas matrices con la información de cada campo.

Por defecto, AFIELDS() opera en el área de trabajo actual. Para operar en un área de trabajo no seleccionada, debe especificarla con una expresión de alias (consulte el ejemplo siguiente).

AFIELDS() es una función de compatibilidad y, por tanto, su utilizaciónno es recomendable. Puede sustituirse por DBSTRUCT(), que no requiere laexistencia de matrices antes de la invocación y devuelve una matriz multidimensional que contiene la estructura de fichero actual de base de datos.

 Ejemplos

     ¦  Este ejemplo muestra la forma de utilizar AFIELDS() y

        ACHOICE() simultáneamente para crear una lista de selección de

        campos:

 

        USE Ventas NEW

        PRIVATE aNombresCampo[FCOUNT()]

        AFIELDS(aNombresCampo)

        @ 1, 0 TO 10, 10 DOUBLE

        nSeleccion := ACHOICE(2, 1, 9, 9, aNombresCampo)

        @ 12, 0 SAY IF(nSeleccion != 0, aNombresCampo[nSeleccion],;

                        “Ninguno seleccionado”)

        RETURN

 

     ¦  El ejemplo siguiente utiliza AFIELDS() con una expresión de

        alias para llenar matrices con la estructura del fichero Ventas.dbf,

        abierto en un área de trabajo no seleccionada:

 

        LOCAL aNombresCampo, aTipos, aAnchuras, aDecimales

        USE Ventas NEW

        USE Cliente NEW

        //

        aNombresCampo := Ventas->(ARRAY(FCOUNT()))

        aTipos := Ventas->(ARRAY(FCOUNT()))

        aAnchuras := Ventas->(ARRAY(FCOUNT()))

        aDecimales := Ventas->(ARRAY(FCOUNT()))

        //

        Ventas->(AFIELDS(aNombresCampo, aTipos, ;

                 aAnchuras, aDecimales))

 Ficheros: La biblioteca asociada es EXTEND.LIB.