FoxPro es un poderoso sistema de gestión de bases de datos (DBMS). A menudo, se nos presenta el escenario de manipular datos que han sido eliminados o alterados. En este escenario, aprenderemos cómo no reconocer estos registros.
Para lidiar con registros que ya han sido modificados o eliminados en FoxPro, necesitaremos utilizar la instrucción SET DELETED.
SET DELETED en FoxPro
La instrucción SET DELETED controla si FoxPro tiene en cuenta o no los registros eliminados. Si SET DELETED está activado (ON), FoxPro ignora los registros que han sido marcados para eliminación. Por otro lado, si está inactivo (OFF), todos los registros, incluidos los eliminados, son accesibles.
SET DELETED ON USE employees LIST
En el ejemplo de código anterior, después de activar SET DELETED, al navegar por la tabla de empleados, solo se tendrán en cuenta los registros no eliminados.
Anulando Modificaciones
Para descartar cambios hechos a los datos en FoxPro, deberemos utilizar REVERT y TRANSACTION.
El comando REVERT se utiliza para deshacer los cambios en una tabla que se han realizado dentro de una transacción. Si una transacción ha sido creada y se desea ignorar los cambios hechos durante esa transacción, se emplearía el comando REVERT.
BEGIN TRANSACTION REPLACE ALL salary WITH salary*1.1 REVERT END TRANSACTION
En el ejemplo de código anterior, se abrió una transacción, se modificaron los salarios de todos los empleados, pero luego se desecharon todos estos cambios con REVERT.
Registros Borrados y Modificados en Conexiones ODBC
Es importante mencionar que si está utilizando una conexión ODBC para trabajar con su base de datos FoxPro, hay una propiedad adicional llamada Deleted que debe ser configurada.
oConn.Open "Driver={Microsoft Visual FoxPro Driver}; SourceType=DBF; SourceDB=c:myVFPDatabasePath; Deleted=No;"
En este ejemplo, la propiedad Deleted está establecida en No, lo que significa que se ignorarán los registros eliminados.
Manejar registros borrados o alterados en FoxPro puede parecer un desafío, pero con estos consejos y trucos, ¡estará equipado para manejar tales situaciones!