TABLEREVERT( ) (Función)
Descarta los cambios realizados en una fila, en una tabla almacenada en búfer o en un cursor, y restaura los datos de OLDVAL( ) para cursores remotos y los valores del disco actual para tablas y cursores locales.
TABLEREVERT([lAllRows [, cTableAlias | nWorkArea]])
Valores devueltos
Numeric
Parámetros
lAllRows
Determina si se descartan los cambios realizados en la tabla o el cursor. Si lAllRows es verdadero (.T.) y está activado el almacenamiento de tablas en búfer, se descartarán los cambios realizados en todos los registros de la tabla o el cursor. Si lAllRows es falso (.F.) y está activado el almacenamiento de tablas en búfer, sólo se descartarán los cambios realizados en el registro actual de la tabla o el cursor.Si está activado el almacenamiento de filas en búfer, se ignorará el valor de lAllRows y se descartarán los cambios realizados en el registro actual de la tabla o el cursor.
El valor predeterminado para lAllRows es falso (.F.).
cTableAlias
Especifica el alias de la tabla o el cursor en el que se descartan los cambios.nWorkArea
Especifica el área de trabajo de la tabla o el cursor en el que se descartan los cambios.
Observaciones
TABLEREVERT( ) devuelve el número de registros para los que se han descartado los cambios.
Nota En una red, es posible que los datos que se encuentran actualmente en disco no coincidan con los datos que había en el disco cuando se abrió la tabla o se creó el cursor. Otros usuarios de la red pueden haber cambiado los datos después de que se abrió la tabla o se creó el cursor.
TABLEREVERT( ) no puede descartar los cambios realizados en una tabla o un cursor en el que no se ha activado el almacenamiento de tablas en búfer. Si ejecuta TABLEREVERT( ) y no está activado el almacenamiento de filas y tablas en búfer, Visual FoxPro generará un mensaje de error. Utilice CURSORSETPROP( ) para activar o desactivar el almacenamiento de filas y tablas en búfer.
Los cambios en la tabla o el cursor abierto en el área de trabajo seleccionada actualmente se descartarán si se ejecuta TABLEREVERT( ) sin los argumentos opcionales cTableAlias o nWorkArea.
TABLEREVERT( ) no vuelve a colocar el puntero de registro en su posición original.
Ejemplo
El ejemplo siguiente demuestra cómo puede usar TABLEREVERT( ) para descartar los cambios realizados a una tabla en búfer. MULTILOCKS se establece en ON, un requisito para el almacenamiento de tablas en búfer. Se abre la tabla customer
de la base de datos testdata
y se usa CURSORSETPROP( ) para establecer el modo de almacenamiento optimista de tablas en búfer (5).
Se muestra el valor del campo cust_id
y se modifica el campo cust_id
con REPLACE. A continuación, se muestra el nuevo valor del campo cust_id
. Se utiliza TABLEREVERT( ) para devolver la tabla a su estado original (se podría utilizar TABLEUPDATE( ) en su lugar para confirmar los cambios). Por último, se muestra el valor invertido del campo cust_id
.
CLOSE DATABASES
SET MULTILOCKS ON && Must be on for table buffering
SET PATH TO (HOME(2) + 'data\') && Sets path to database
OPEN DATABASE testdata && Open testdata database
USE Customer && Open customer table
= CURSORSETPROP('Buffering', 5, 'customer') && Enable table buffering
CLEAR
? 'Original cust_id value: '
?? cust_id && Displays current cust_id value
REPLACE cust_id WITH '***' && Changes field contents
? 'New cust_id value: '
?? cust_id && Displays new cust_id value
= TABLEREVERT(.T.) && Discard all table changes
? 'Reverted cust_id value: '
?? cust_id && Displays reverted cust_id value