Ayuda con implementación de botón de eliminar en un formulario de visual fox pro

[size= small; font-family: Times New Roman]Hola experto, tal vez parezca simple lo que quiero consultar pero sucede que estoy haciendo un mantenimiento y tengo un botón eliminar que tiene el siguiente código:
IF BOF() OR EOF()
messagebox("No hay registros para eliminar ...",0,"Advertencia")
ELSE
if messagebox("¿Esta seguro de eliminar el registro?",36,"Confirmación")=6
reg=recno()
use d:\libros\datos\denom_ingresos EXCLUSIVE
GO reg
DELETE
PACK
messagebox("El registro fue eliminado ...",62,"Aviso")
thisform.cmdUltimo.Click
ELSE
thisform.cmdUltimo.Click
ENDIF
endif
thisform.refresh
En el load del formulario tengo este codigo:
USE d:\libros\datos\denom_ingresos SHARED AGAIN IN 0 ORDER id_den
Y en el init del form tengo este codigo
Set exclusive off
set dele on
thisform.mostrardatos
Cada vez que cargo el form y elimino un registro me aelimina normal pero cuando vuelvo a cargar el formulario ya a intentar borrar otro registro me dice que el archivo esta en uso.

1 respuesta

Respuesta
1
Después de eliminar el registro la tabla permanece abierta en modo exclusivo, puedes volver a abrirla en modo compartido.
Yo sugiero que los registros solo se marquen para ser eliminados y el borrado físico se lleve a cabo al final de la aplicación.
A que te refieres con abrirla en modo compartido por que el eveneto load del form lo abro en modo compartido.
USE d:\libros\datos\denom_ingresos SHARED AGAIN IN 0 ORDER id_den
Si, en el evento Load, pero no después de eliminar el registro.
Cuando eliminas el registro, para poder utilizar la instrucción Pack abres la tabla en modo exclusivo.
Entonces como sería la posible solución, he colocado close tables antes de abrir la tabla en el evento load:
close tables
USE d:\libros\datos\denom_ingresos SHARED AGAIN IN 0 ORDER id_den
- En el evento Destroy del formulario agrega la instrucción Close Databases All
- Modifica el código de eliminación a:
.
.
If messagebox("¿Esta seguro de eliminar el registro?",36,"Confirmación")=6
reg=recno()
use d:\libros\datos\denom_ingresos EXCLUSIVE
GO reg
DELETE
PACK
use d:\libros\datos\denom_ingresos SHARED  && Abrir el archivo en forma compartida
Messagebox("El registro fue eliminado ...", 62,"Aviso")
Thisform. CmdUltimo. Click

.
.
----
En el evento Load abres las tablas nuevamente, esa es la finalidad de la clausula AGAIN

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas