La Web del Programador: Comunidad de Programadores
 
    Pregunta:  26873 - ELIMINACION FISICA DE REGISTROS
Autor:  Damian Hernandez
Hola a todos , mi problema es el siguiente :
Mi sistema realizado en Visual basic 6.0 accede a una base de datos de Visual fox 6.0 (utilizo Ado) , lo que ocurre es que necesito eliminar registros fisicamente desde VB pero al utilizar el .delete en la base de datos de fox solo lo marca (en VB no existe ningun pack) , quisiera saber si desde fox al marcar el registro se realize algo que ejecute un pack , como algun desencadenante o algo asi .
Yo practicamente no conosco fox .
Gracias !!!

  Respuesta:  Marvin Callejas
Podrías definir un procedimiento en el desencadenante eliminar de la tabla en la cual estas borrando el registro, esto es factible pero presenta un inconveniente que necesitas acceso exclusivo a la tabla donde estas realizando la acción, principalmente si tu sistema esta siendo utilizado por varias personas simultáneamente.
Si lo anterior no es tu caso sigue los siguientes pasos:
a) Modifica la tabla en el diseñador de tablas y en la pestaña de eliminar coloca el nombre de un procedimiento que podrías llamar _eliminar_registros().
b) Abre la base de datos y en el menú base de datos selecciona "modificar procedimientos almacenados".
c) Al final de los procedimientos que se encuentra coloca el siguiente codigo:

Procedure _eliminar_registros
pack

Este procedimiento se desencadenará siempre que elimines un registro de la tabla, recuerda que en la definición de tú ODBC debes declarar el acceso exclusivo.

Ahora bien si tu problema es que necesitas que el usuario no tenga acceso a los registros borrados desde las sentencias SQL que envías al ODBC de Visual Fox a través de ADO, únicamente agrega la siguiente cláusulas a todas tus querys:

WHERE DELETED() <> .T.
Esto excluirá los registros una vez hayan sido borrados.

Si necesitas información adicional puedes solicitármela.

Feliz Año Nuevo 2002.

  Respuesta:  Carlos Muñoz
Amigo debes realizar 2 cosas,
la 1era tiene que ver con el ODBC, es decir, al momento de crear una fuente de datos para la conexion a la base de datos visual foxpro, en opciones debes sacar el checkeo de "ELIMINADO"

La 2da en el programa visual foxpro debera tener un programita que reindexe los archivos de tu base de datos...

con ello tendras saniado el problema...