Histórico da Página
Sintaxis
DBEVAL( <bloque de código 1> [, <bloque de código 2> ]
[, <bloque de código 3> ] [, <expresión numérica 1> ]
[, <expresión numérica 2> ] [, <expresión lógica> ] )
Propósito
Ejecuta y evalúa un bloque de código para cada registro de un archivo de datos, seleccionados de acuerdo con un determinado alcance y condiciones.
Argumentos
<bloque de código 1>
Define el bloque de código que se ejecutará para cada registro del archivo de datos.
<bloque de código 2>
Define una condición lógica opcional, especificada por medio de un bloque de código, que se evaluará para cada registro, dentro del alcance especificado. De forma idéntica a la condición del comando FOR, el registro se evaluará si la condición especificada es verdadera.
<bloque de código 3>
Define una condición lógica opcional, especificada por medio de un bloque de código, que se evaluará para cada registro, dentro del alcance especificado, hasta que resulte falso (.F.). De forma idéntica a la condición del comando WHILE, el registro se evaluará mientras la condición especificada permanece verdadera (.T.). En este caso, el archivo debe estar ordenado o indexado de acuerdo con esta condición.
<expresión numérica 1>
Opcionalmente, define la cantidad de registros que deben procesarse, a partir del registro actual. O su efecto equivale al de la cláusula NEXT.
<expresión numérica 2>
Opcionalmente, define el número de un determinado registro que se procesará. Si se especifica este argumento, el bloque de código 1 se evaluará únicamente para este registro.
<expresión lógica>
Define un valor lógico opcional que determina si el alcance de la función será todos los registros del archivo, a partir del primero (Todo) o a partir del actual (Resto). Si su resultado es verdadero (.T.), el alcance será el resto. En caso que sea falso (.F.), el alcance será todo. En caso que este argumento no se especifique, el alcance estándar asumido es todo. Es decir, todos los registros del archivo se procesarán, a partir del primero.
Utilización
La función DBEVAL() es semejante a la función EVAL(), que ejecuta un determinado bloque de código para cada elemento de un array. De la misma forma que AEVAL(), la función DBEVAL() puede utilizarse en la construcción de funciones de usuario que procesen archivos de datos.
Sugerencias
Generalmente, la función DBEVAL() opera sobre el área de trabajo seleccionada. Sin embargo, si se especifica otro alias, podrá operarse sobre otra área de trabajo. Por ejemplo:
<alias>->DVEVAL()
En este ejemplo, la función ejecuta el bloque de código especificado para los registros del archivo de datos abierto en el área de trabajo especificada por el alias.
Ejemplos
El siguiente ejemplo modifica el sueldo de los empleados que ganan hasta un determinado límite, de acuerdo con un factor de corrección.
LOCAL nFator := 1.2
LOCAL nLimite := 50000
DbSelectArea(“PESS”)
bCodBlo1 := { | | PESS->SALARIO := nFator * PESS->SALARIO }
bCodBlo2 := { | | PESS->SALARIO < nLimite }
DBEVAL(bCodBlo1, bCodBlo2)
RETURN NIL