Creación de Aplicaciones multiusuario – 4 Control del bloqueo de registros Puesto que en una Base de Datos multiusuarios se va a originar que varios usuarios puedan acceder simultáneamente a la base de datos y posiblemente en algunos momentos varios usuarios traten de actualizar un registro en el mismo momento, Access deberá saber qué cambio debe aceptar. Para ello Access emplea todo un sistema de control del bloqueo de registros. El bloqueo por página que utiliza Access crea un bloque de 2048 bytes (2k) de longitud. En este bloque almacena los datos de uno o varios registros, según su tamaño. Las páginas pueden contener varios registros o un solo registro puede ocupar varias páginas. Cuando se activa el bloqueo de registros por página se bloquean todos los registros contenidos en ella. Si la base de datos contiene cierto número de pequeños registros es posible que un usuario que edite un registro, puede impedir (bloquear) que otros usuarios editen otros muchos registros. El cuadro de diálogo Opciones permite establecer las opciones multiusuario, así como otras opciones. Bloqueo predeterminado de registros Las opciones de la sección bloqueo predeterminado de registros establecen el modo que por defecto Access realizará el bloqueo de registros. Las opciones son: Sin bloquear (predeterminado), Todos los registros y Registro modificado Modo de bloqueo Sin bloquear. Este modo se denomina modo de bloqueo optimista porque el bloqueo solo se lleva a cabo en el momento en que se realiza la actualización de un registro, y tan solo causará error si el mismo registro es modificado por dos personas distintas al mismo tiempo. Modo de bloqueo Todos los registros. Al utilizar este método de bloqueo, en esencia se estarán bloqueando todos los registros de un recordset. Esto significa que otros usuarios que intenten acceder a esos mismos registros únicamente podrán leerlos pero no podrán actualizarlos. Al elegir ésta opción además, impide que otros usuarios puedan añadir o borrar registros. Modo de bloqueo Registro modificado. Este modo se denomina bloqueo pesimista. Bloquea la página en cuanto se empiece a editar un registro. Uno de los puntos a favor que tiene este modo de bloqueo es que garantiza que solo un usuario estará modificando el registro en un momento dado. En cuanto presione una tecla para modificar el registro, la página de registros donde éste se halla será bloqueada. La parte negativa es que como Access utiliza el bloqueo por página, es posible que otros registros que quieran modificar otros usuarios los encuentren bloqueados, aun cuando nadie esté en realidad modificándolos. Utilizar el modo de bloqueo optimista, modo de bloque Sin bloquear, es el mejor desde el punto de vista del rendimiento ya que un desconcertante conflicto de escritura solo le aparecerá al usuario cuando dos usuarios editen el mismo registro e intenten actualizarlo al mismo tiempo. Aunque elegir una de éstas opciones para toda la aplicación puede ser suficiente, un buen desarrollador debe tener en cuenta cada momento, cada circunstancia que puedan provocar los usuarios y utilizar el bloqueo a nivel de los formularios independientes. Para ello, tendremos que disponer de formularios sin origen del registro. Cuando el usuario rellena los campos, no está actualizando nada, ya que el formulario no depende de ninguna tabla. Una vez que haya actualizado todos los campos, tendremos un botón Guardar, que mediante código va pasando los valores y finalmente se agrega un registro a la tabla. Este sistema, sin duda es relativamente costoso a la hora de programar, pero absolutamente efectivo en cuanto a rendimiento de la base de datos. Con todo, las funciones que se generan al hacer el primer formulario sirven de plantilla para otros formularios, por lo que la tarea no va a resultar tan complicada. En el cuadro de Opciones tenemos dos valores que podemos manejar: Intervalo de actualización Numero de intentos de actualización Si un usuario intenta actualizar un registro bloqueado, access espera el tiempo especificado y trata de actualizarlo el número de veces indicado. Si la aplicación va a tener ediciones rápidas de registros se pueden manejar éstos valores para mejorar el rendimiento del bloqueo de registros. Si utilizamos el método de bloqueo Sin bloquear es posible que el intervalo y numeros de actualización sean insuficientes. Podemos reducir el intervalo y aumentar el número de intentos. El intervalo de actualizaciones es el tiempo que Access espera antes de buscar un conjunto de registros de un formulario o tabla abiertos y luego actualizar y mostrar los datos modificados. Por ejemplo, cuando dos usuarios abren un formulario en el mismo registro, si uno aplica y guarda los cambios en el registro, la pantalla del otro usuario se actualiza en el intervalo especificado para reflejar los cambios. En cualquier caso, dado que cada aplicación difiere de otra, es conveniente ir probando éstos valores hasta conseguir los más óptimos para cada aplicación.