Comando pack

Quisiera saber de que manera puedo eliminar físicamente algunos registros de una tabla en la que ya he marcado los registros como eliminados con el delete all pero necesito borrarlo físicamente solo que en ocasiones me da error de que debo abrir la tabla en forma exclusiva.
Utilice
set exclusive on
select tabla
delete all
pack
set exclusive off
Pero siempre me vuelve a dar el error

1 Respuesta

Respuesta
1
Pues mira.. una forma que podría ser útil va así:
Puedes configurar un botón (por ejemplo) "Eliminar" para marcar los registros que vas a desechar "físicamente" de la tabla. Primero márcalos con DELETE (haciendo click en el botón) y cuando salgas del form (en el evento RELEASE de tu form) usas PACK y la tabla en modo exclusivo! Así se produce la eliminación y la tabla se vuelve a cerrar, sin problemas! Así:
1. En el evento click de tu botón Eliminar, coloca este código:
**--Eliminar registros DELETE--**
#DEFINE MSGBOX_YES 6
#DEFINE C_MSGBOX1 36
#DEFINE C_DELETE_LOC "Desea eliminar este registro?"
IF EMPTY(ALIAS())
RETURN
ENDIF
IF MESSAGEBOX(C_DELETE_LOC,C_MSGBOX1) = MSGBOX_YES
    DELETE
       THISFORM.Refresh
Endif
IF !EOF()
SKIP 1
Endif
IF EOF() AND !BOF()
SKIP -1
Endif
THISFORM. Refresh
**--Fin--**
2. En el evento RELEASE de tu form, coloca esto:
**--
USE nombredetutabla EXCLUSIVE
PACK
Proba! :)
Espero te sea de utilidad. En mi humilde opinión... no es aconsejable eliminar físicamente los registros de tu tabla, dado que podrían haber situaciones en las que necesites invocarlos (con RECALL) para usarlos nuevamente! Basta con aplicar un DELETE sobre el registro para marcarlo para su eliminación y con SET DELETED ON (en el INIT() del form) controlas no ver los registros ya marcados!
Claro.. es solo mi humilde opinión! Si tienes alguna duda o no te da bien, avisame para ayudarte! Si no, recuerda finalizar la pregunta!
Saludos vecino! :) ! Un abrazo!
Desde Managua, Nicaragua!
A tus ordenes, Ravenn :D :D :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas