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( )