La Web del Programador: Comunidad de Programadores
 
    Pregunta:  12870 - BLOQUEO DE REGISTROS CONTRA ACCESS
Autor:  Jose Manuel Rodriguez Cid
Estimados amigos: Mi pregunta es que desde siempre tengo el problema de que al hacer un programa de VB que trabaje con una base de datos de Access, al haber varios usuarios trabajando simultaneamente, cuando acceden a registros cercanos, da un error de bloqueo y se cierra la aplicación. No se si el problema viene de VB o de Access pero algo he oido de que no bloquea cada registro sino la página, por lo cual puede haber más de un registro y si hay otra persona en el otro registro, da error.
Me gustaría saber si hay alguna manera de que bloquee exactamente el registro a modificar.
Muchas gracias y un saludo. Agradecería que me respondieseis también al correo electrónico

  Respuesta:  Jose A.
Hola Jose Manuel.
Siento decirte que la respuesta a tu pregunta es NO, Access no bloquea Registros, sino páginas de memoria (1.024 Kb, creo). Una solución a tu problema es que cada registro ocupara una página completa, con lo cual sólo se "bloquearía un registro" y "engañarías" al access, pero no es una solución muy correcta, sobre todo cuando la BBDD empiece a crecer.
Otra solución que puedes adoptar para atenuar el problema es, desde Visual Basic, realizar bloqueos OPTIMISTAS al abrir los registros, esto es, bloquear la base de datos sólo cuando se va a escribir realmente en el disco duro. Con este tipo de bloqueos, sólamente se bloquea un registro durante unas décimas de segundo (cuando se va a escribir realmente), con lo que es bastante difícil que dos usuarios escriban a la vez en el mismo registro o página.
Si tienes algún otro problema con esto o con alguna otra cosa, escríbeme y veremos lo que se puede hacer.
Un Saludo.