Transacción en Access y Bloqueo de Tablas

Tengo un programa hecho en VB6, que graba usando una conexión ADO en una tabla de Access 2000 así:
Begin trans
cn.execute "insert into........."
Commit trans
Varios usuarios acceden al mismo programa a través de una unidad virtual.
Como puede mi programa saber que se está ejecutando una transacción y si otro usuario intenta grabar que espere a que la transacción actual termine para que su transacción se efectúe.

1 respuesta

Respuesta
1
Yo haría lo siguiente...
Antes de iniciar la transacción comprobaría si existe un archivo en la misma carpeta donde está instalada la base de datos... este archivo se podría llamar por ejemplo Ocupado.txt
Crea una etiqueta llamada Inicio
Inicio:
If Dir(RutaDondeEsteLaBaseDeDatos & "\Ocupado.txt")="" then
'Crear el archivo...
open RutaDondeEsteLaBaseDeDatos & "\Ocupado.txt" for Append as #1
'Cerramos el canal abierto
close #1
'Hacer la actualización de la base de datos.
...
...
...
'una vez finalizado, eliminamos el archivo... para liberar la base de datos..
kill RutaDondeEsteLaBaseDeDatos & "\Ocupado.txt"
Else
'Volvemos a inicio
Goto Inicio
End if
Este es un método poco ortodoxo pero seguro que te funciona...
Otra cosa que podrías hacer es abrir la conexión a la base de datos con apertura en modo exclusivo... de forma que ningún otro usuario podrá acceder a la base de datos hasta que la transacción esté cerrada y hayas cerrado también el objeto de la base de datos.
Saludos.
Jordi Pérez i Madern
Mataró (Barcelona)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas