Bases de datos en Visual Fox

Hola a todos!
Tengo una base de datos en Visual Fox, que trabajara con varios usuarios.
¿Cómo hago para borrar físicamente un registro sin bloquear la tabla en modo exclusivo y evitarme así interrumpir el trabajo de los otros usuarios?
1

1 respuesta

Respuesta
1
Si trabajas en multiusuario NUNCA debes abrir las bases de datos en forma EXCLUSIVA ni usar las tablas en forma EXCLUSIVA. Siempre SHARED.
Simpre debes tener seteado el SET DELETE en ON.
En el .PRG que inicia tu programa debes poner el siguiente código:
SET RESOURCE off
SET DEFA TO C:\RPI
SET PATH TO C:\RPI\DATOS;C:\RPI\FONDOS;C:\RPI\FORMULARIOS;C:\RPICLASES;C:\RPI\GRAFICOS;C:\RPI\ICONOS;C:\RPI\INCLUSIONES;C:\RPI\MENUS;C:\RPI\PROGRAMAS;C:\RPI\REPORTES
PUBLIC _FONDO0,_FONDO1,_FONDO2,_FONDO3,_FONDO4,_FONDO5
_FONDO0='C:\RPI\GRAFICOS\WALL.JPG'
_FONDO1='C:\RPI\GRAFICOS\WALL.JPG'
_FONDO2='C:\RPI\GRAFICOS\BK.JPG'
_FONDO3='C:\RPI\GRAFICOS\BACKGRD1.GIF'
_FONDO4='C:\RPI\GRAFICOS\TRAMA19.GIF'
_FONDO5='C:\RPI\GRAFICOS\F_FONTBACK.JPG'
SET PROCEDURE TO SUBRUTINAS.PRG
SET EXCLUSIVE OFF
SET AUTOSAVE ON
SET OPTIMIZE ON
SET REPRO TO AUTOMATIC
SET MULTILOCKS ON
Periódicamente debes correr un procedimiento con un código parecido a este.
Open database mi_bdd exclusive
Use tabla1 exclusive
PACK
Use tabla2 exclusive
PACK
Use tabla3 exclusive
PACK
.
.
.
.
.
Use tablan exclusive
PACK
Close database
Pero este proceso se debe ejecutar teniendo la seguridad de que no hay otro usuario en el sistema.
Puedes ejecutarlo al principio del día, al fin del día o cuando haces la copia de seguridad (que también es un proceso de uso exclusivo de tablas).
SUERTE.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas