sábado, 20 de julio de 2019

Como borrar y restaurar registros (Delete, Recall)


(Delete, Recall)



Retorna un valor lógico cuando el registro está marcado para ser borrado.
Sintaxis
DELETED ([cTableAlias | nWorkArea])

Si el registro está marcado para su eliminación, DELETED () devuelve true (.T.); de lo contrario, DELETED () devuelve false (.F.).

Los registros se pueden marcar para eliminar con DELETE y DELETE - SQL, y se pueden desmarcar con RECALL.

El siguiente ejemplo abre la tabla de clientes en la base de datos testdata. BORRAR: SQL se usa para marcar todos los registros para eliminación donde el campo de país contiene EE. UU. DELETED () se utiliza para mostrar todos los registros marcados para su eliminación.

Si se necesitara borrar o restaurar muchos registros una vez según su contenido, estos métodos no son prácticos. Se podrían borrar registros en un grupo para llevar a cabo operaciones de verificación como quitar registros obsoletos o eliminar  registros de una base de datos que se haya copiado a un archivo separado.

Desde los menús

Se pueden marcar registros para borrado o se puede eliminar la marca de borrado utilizando la consulta de actualización. Los criterios de selección de registros se especifica de la misma forma que en otras consultas, es decir, introduciendo condiciones en el esqueleto del archivo o en la caja de condiciones.

Desde este modo, se pueden borrar y restaurar registros en grupos según sus contenidos con las mismas órdenes DELETE y RECALL que se utilizaban para borrar registros individualmente. Se pueden identificar los registros que se requieren borrar y restaurar utilizando un filtro para especificar criterios de selección o añadiendo un ámbito  o una clausula FOR, o si la base de datos está ordenada o indexada una clausula WHILE en las órdenes.

Por ejemplo, se podrían marcar para su borrado todos los  clientes que no hayan realizado ningún pedido en dos(2) años con la siguiente orden:

Use cliente

Delete for date() – ultpedido > 750

Recall Desmarca los registros marcados para su eliminación en la tabla seleccionada.

Sintaxis

RECALL [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]
   [IN nWorkArea | cTableAlias]

Especifica un rango de registros para recuperar. El ámbito predeterminado para RECUPERAR es el registro actual (SIGUIENTE 1). Solo se recuperan los registros que caen dentro del rango especificado. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST.

Para obtener más información sobre las cláusulas de alcance, consulte Cláusulas de alcance.

PARA lexpresion1

Especifica que solo se recuperan los registros para los cuales lExpression1 se evalúa como verdadero (.T.). Esta opción le permite filtrar registros no deseados. Rushmore Query Optimization optimiza RECALL FOR si lExpression1 es una expresión optimizable.

Para obtener el mejor rendimiento, use una expresión optimizable en la cláusula FOR. Para obtener más
Información, consulte CONFIGURAR OPTIMIZAR y Usar la optimización de consultas de Rushmore para acelerar el acceso a los datos.

Mientras lexpresion2

Especifica una condición por la cual los registros se recuperan mientras lExpression2 se evalúe como verdadero (.T.).

NOOPTIMIZAR

Impide que Rushmore optimice la RECUPERACIÓN Para obtener más información, consulte CONFIGURAR OPTIMIZAR y Usar la optimización de consultas de Rushmore para acelerar el acceso a los datos.

En nWorkArea | cTableAlias

Especifica el área de trabajo o el alias de la tabla afectados por el comando RECALL.

Utilice esta cláusula para especificar un área de trabajo o una tabla fuera del área de trabajo actual.

Puede usar REALL para recuperar registros, siempre y cuando que no haya emitido PACK o ZAP.

El siguiente ejemplo abre la tabla de clientes en la base de datos testdata. BORRAR: SQL se usa para marcar todos los registros para eliminación donde el campo de país contiene EE. UU.

Se muestran todos los registros marcados para su eliminación. RECALL ALL se utiliza para marcar todos los registros marcados para su eliminación.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Opens Customer table

DELETE FROM customer WHERE country = 'USA'  && Mark for deletion
CLEAR
LIST FIELDS company, country FOR DELETED( ) && List marked records
RECALL ALL  && Unmark all records marked for deletion

0 comentarios:

Publicar un comentario