Eliminar registros

¿Cómo puedo eliminar registros en tablas que se abren en SHARED?
Antecedentes:
- Cuando tu abres una tabla en modo exclusivo:
USE PRUEBA.DBF in 3 EXCLUSIVE
Puedes eliminar permantemente un registro con las siguientes instrucciones:
DELETE && que marca el registro para eliminar
PACK && Borra a todos los registros marcados para borrar
-Pero ahora, cuando abres en modo SHARED (compartido), si intentas ejecutar
PACK
aparece un mensaje de error indicando que debes abrir la tabla en modo exclusivo.
He visto programas desarrollado en Red que eliminan permanentemente los registros marcado aunque estén abiertos en modo SHARED, pero ya hice mil y un intentos y no he podido...
Espero que me puedas ayudar y gracias de antemano.

1 respuesta

Respuesta
1
En realidad no puedes eliminar físicamente registros mientras la tabla no este de modo exclusivo, pero lo que si puedes hacer es tener una pequeña rutina de verificación en donde compruebes si ya esta abierta si no lo esta la abres de modo exclusivo para eliminar y si la quieres abrir de modo SHARED debes averiguar si esta abierta de modo exclusivo, si no la podrás abrir, si la encuentra ocupada le envías el mensaje al usuario que se esta realizando el proceso de borrado y que debe intentarlo nuevamente.
Con la siguiente función puedes averiguar si esta abierta o no la tabla, el nombre de la tabla lo envías con el parámetro WTABLA, y para saber si la puedes abrir o no la variable WESTABLA te lo indica, cabe decirte también que antes de llamar la función inicializes la variable WESTABLA para que al regresar, puedas obtener el valor de dicha variable.
Func abrirtabl
Para wtabla
nErrorenTabla=.f.
ON ERROR DO gestionError WITH Error()
USE (WTABLA) EXCL
IF !nErrorenTabla
STORE "A" TO WESTABLA
else
STORE "C" TO WESTABLA
Endif
On error
RETURN
Proc GestionError
PARAM nError
IF nError=1705
nErrorenTabla=.t.
ENDIF
RETURN
Muchísimas gracias, aunque es una solución en la que había pensado, me alegra saber que hay gente que esta dispuesta a ayudar a otros colegas...
Saludos desde Mérida, Yucatán...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas