OLDVAL( ) (Función)
Devuelve los valores originales para campos que se han modificado pero no se han actualizado.
OLDVAL(cExpression [, cTableAlias | nWorkArea])
Valores devueltos
Character, Currency, Date, DateTime, Double, Float, Integer, Logical, Numeric o Memo
Parámetros
- cExpression
Especifica una expresión cuyo valor original devuelve OLDVAL( ) a partir de una tabla o un origen de datos remoto. cExpression suele ser un campo o una expresión que consta de una serie de campos de la tabla o el origen de datos remoto. - cTableAlias
Especifica el alias de la tabla o el cursor desde el que se devuelven los valores originales del campo. - nWorkArea
Especifica el área de trabajo de la tabla o el cursor del que se devuelven los valores originales del campo.
Observaciones
OLDVAL( ) devuelve valores originales de campo para registros de una tabla o un cursor de Visual FoxPro en el que se ha activado el almacenamiento de filas o tablas en búfer mediante CURSORSETPROP( ).
Si una tabla de una base de datos o un cursor tiene reglas de validación, OLDVAL( ) no necesita que se active el almacenamiento de filas o tablas en búfer para devolver valores originales de campo.
Si el puntero del registro se mueve a otro registro cuando está activado el almacenamiento de filas en búfer, o si se ejecuta TABLEUPDATE( ) para grabar cambios en el registro, o hay alguna otra acción que produce una actualización, como la terminación de una transacción, los campos se actualizarán y los valores originales del campo dejarán de estar disponibles.
El tipo de datos del valor que devuelve OLDVAL( ) está determinado por la expresión que especifique con cExpression.
Si se ejecuta OLDVAL( ) sin los argumentos opcionales cTableAlias o nWorkArea, se devolverán los valores originales de campo para la tabla o el cursor abierto en el área de trabajo seleccionada actualmente.
Ejemplo
El ejemplo siguiente demuestra cómo puede usar OLDVAL( ) para devolver el valor original para un campo en una tabla almacenada en búfer. Se crea una tabla llamada employees
y se usa INSERT - SQL para insertar el valor “Smith” en el campo cLastName
.
MULTILOCKS se establece en ON, un requisito para el almacenamiento de tablas en búfer. Se usa CURSORSETPROP( ) para establecer el modo de almacenamiento optimista de tablas en búfer (5).
Se muestra el valor original del campo cLastName
(Smith) y se modifica el campo cLastName
con REPLACE. Se muestra el nuevo valor del campo cLastName
(Jones). Con OLDVAL( ) se muestra el valor campo cLastName
(Smith). Después se utiliza TABLEUPDATE( ) para confirmar los cambios realizados a la tabla. Por último se muestra el valor actualizado del campo cLastName
(Jones).
CLOSE DATABASES
CLEAR
* Create new table and add blank record
CREATE TABLE employee (cLastName C(10))
APPEND BLANK
* Insert initial value
INSERT INTO employee (cLastName) VALUES ("Smith")
* Enable and set table buffering
SET MULTILOCKS ON && Allow table buffering
=CURSORSETPROP("Buffering", 5, "employee" ) && Enable table buffering
* Display initial value
=MESSAGEBOX("Original cLastName value: "+ cLastName, 0, "Results")
* Change record value and display results
REPLACE cLastName WITH "Jones"
=MESSAGEBOX("Modified cLastName value: "+ cLastName, 0, "Results")
* Store the old value of the field to cTemp variable and display results
cTemp=OLDVAL("cLastName", "employee")
=MESSAGEBOX("Original cLastName value: "+ cTemp, 0, "Results")
* Update table and display final value
=TABLEUPDATE(.T.)
=MESSAGEBOX("Final cLastName value: "+ cLastName, 0, "Results")
* Close and delete example table file
USE
DELETE FILE employee.dbf
Vea también
CURVAL( ) | GETFLDSTATE( ) | TABLEREVERT( ) | TABLEUPDATE( ) | CURSORSETPROP( )