AFIELDS ( )*
Llena matrices con la estructura del fichero actual de base de datos.
Sintaxis
AFIELDS([], [],
[], []) –> nCampos
Argumentos
es la matriz que se va a llenar con los nombres de campo. Todos sus elementos son cadenas de caracteres.
es la matriz que se va a llenar con los tipos de campo de . Todos sus elementos son cadenas de caracteres.
es la matriz que se va a llenar con las anchuras de los campos de . Todos sus elementos son de tipo numérico.
es la matriz que se va a llenar con el número de decimales definido para los campos de . Todos los elementos son de tipo numérico. Si el tipo del campo no es numérico, el elemento de 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.