Eliminar registros

Para eliminar registros debe marcarlos primero para eliminación y luego suprimir los registros marcados. Hasta su supresión, los registros marcados permanecen en el disco y puede quitarles la marca para restaurarlos. En esta sección se explica cómo marcar, desmarcar y suprimir los registros de una tabla.

Marcar registros para su eliminación

Para marcar registros para su eliminación puede utilizar la interfaz o bien el comando DELETE - SQL.

Para marcar un registro para su eliminación

  • En una ventana Examinar, haga clic en el marcador de eliminación para marcar el registro.

    –O bien–

  • En el menú Tabla, elija Eliminar registros.

    –O bien–

  • Utilice el comando DELETE - SQL.

También puede utilizar el comando DELETE - SQL para especificar un intervalo de registros, así como una condición basada en una expresión lógica que los registros deben satisfacer para que se marquen para su eliminación. Por ejemplo, el código siguiente marca para eliminación todos los registros de productos que contienen ‘T’ en el campo Discontinu:

USE products
DELETE FROM products WHERE discontinu = .T.
BROWSE

También puede seleccionar un grupo de registros para su eliminación si establece las condiciones en el cuadro de diálogo Eliminar. Elija Eliminar registros en el menú Tabla para especificar los criterios de eliminación.

Elija el botón Alcance para establecer el intervalo de registros que desea eliminar.

Si puede describir una serie de registros que desea eliminar, podrá crear una expresión basada en dicha descripción. Elija el botón FOR para mostrar el Generador de expresiones de forma que pueda crear una expresión. Por ejemplo, la expresión FOR Country = 'UK' seleccionará todos los registros del Reino Unido y los marcará para su eliminación.

Los registros marcados para eliminación no se quitan físicamente de la tabla hasta que no se ejecuta el comando PACK. Al ver la tabla en la ventana Examinar, todos los registros eliminados tendrán un indicador de eliminación, pero aún serán visibles en la tabla, siempre que SET DELETED esté desactivado. Si SET DELETED está activado, los registros marcados para eliminación no aparecerán en la ventana Examinar.

La configuración del comando SET DELETED también afecta al acceso a los registros marcados para su eliminación por parte de los comandos que operan sobre registros.

Desmarcar los registros marcados para su eliminación

Para desmarcar los registros marcados para su eliminación puede utilizar el comando RECALL. El comando RECALL sólo puede recuperar los registros si aún no se ha ejecutado un comando PACK o ZAP, que eliminan físicamente los registros de la tabla.

Para eliminar la marca de un registro marcado para eliminación

  • En una ventana Examinar, haga clic en el marcador de eliminación para eliminarlo del registro.

    –O bien–

  • En el menú Tabla, elija Desmarcar registros.

    –O bien–

  • Utilice el comando RECALL.

Con el comando RECALL puede especificar un intervalo de registros, así como una condición basada en una expresión lógica que los registros deben satisfacer para que se les quite la marca de eliminación. Por ejemplo, el código siguiente quita la marca de eliminación de todos los registros de productos que contengan ‘T’ en el campo discontinu:

USE products 
RECALL FOR discontinu = .T.
BROWSE

Cuando vea la tabla en la ventana Examinar, los registros especificados ya no tendrán la marca de eliminación.

Suprimir registros marcados para eliminación

Una vez marcado un grupo de registros para su eliminación, puede suprimirlos de forma definitiva del disco a través de la interfaz o mediante el lenguaje.

Para suprimir del disco los registros marcados para eliminación

  1. En una ventana Examinar, elija Quitar registros eliminados en el menú Tabla.

  2. Elija cuando se le pregunte si desea empaquetar la tabla.

    –O bien–

  • Utilice el comando PACK.

El comando PACK tiene dos cláusulas: MEMO y DBF. Si ejecuta PACK sin las cláusulas MEMO o DBF, se quitarán tanto los registros del archivo de tabla como los del archivo memo asociado. Asegúrese de tener acceso exclusivo a la tabla. Por ejemplo, el código siguiente suprime los registros marcados para eliminación:

USE customer EXCLUSIVE
PACK

Para eliminar solamente los registros del archivo de tabla y dejar intactos los del archivo memo, utilice PACK DBF.

Conservar espacio

La información de los campos Memo de una tabla se almacena en un archivo memo asociado, con el mismo nombre de la tabla y la extensión .fpt. Si desea quitar el espacio no utilizado en el archivo memo, pero sin quitar los registros de la tabla marcados eliminación, ejecute el comando PACK con la cláusula MEMO. Asegúrese de tener acceso exclusivo a la tabla.

Suprimir todos los registros de una tabla

Si desea quitar todos los registros de una tabla y dejar sólo su estructura, puede utilizar el comando ZAP. El uso de ZAP equivale a ejecutar DELETE ALL y a continuación PACK, pero ZAP es mucho más rápido. Asegúrese de tener acceso exclusivo a la tabla.

Precaución   Los registros de la tabla actual eliminados con ZAP no pueden recuperarse.

Vea también

Agregar registros | Crear índices para tablas | Trabajar con registros | DELETE - SQL | Examinar | PACK | SET DELETED | RECALL | Ordenar por múltiples campos