La Web del Programador: Comunidad de Programadores
 
    Pregunta:  3274 - APLICACIONES MULTIUSUARIOS
Autor:  Roy Sánchez Benavides
Deseo saber como crear aplicaciones multiusuarios, como el bloqueo de visualizar un registro que otro usuario esta procesando o abriendo, según otras personas ado da problemas para este tipo de aplicaciones.Solicito la ayuda de personas con experiencia en el desarrollo de estas aplicaciones y que me puedan responder, gracias!!

  Respuesta:  Santiago Tomas
Los bloqueos afectan cuando uno está editando. En mis programas nunca he tnido este problema cuando haces un addnew o consultando (en modo readonly o en snapshot). Tendrás que centrarte en el caso del edit. Puedes seguir el procedimiento parecido al de Access: recuperar el registro, leerlo, hacer cambios y antes de guardar comprobar si ha sido modificado por otro usuario y preguntar si deseas guardar tus cambios o mantener los realizados por otro usuario. En mi caso utilizo trnasacciones y un do while mientras esta bloqueada la tabla, aunque tambien ayuda obligar al guardado mediante un dbengine.idle [dbfreelocks], lo cual elimina bloqueos e historias. Tienes pistas mas que suficientes para hacer pruebas.

  Respuesta:  alberto garea vidal
Yo suelo desarrollar aplicaciones multiusuario, visual te ofrece la posibilidad de bloquear un registro contra una base de datos access usando la propiedad Lockedits=true, no obstante este tipo de bloqueo tiene un inconveniente, y es que no se bloquea solamente el registro, si no la página por lo cual puede abarcar a mas de un registro.
Yo lo he resuelto disponiendo una tabla auxiliar en la base de datos, que contiene dos campos, uno es la referencia a la clave, por ejemplo si la base de datos trata temas de personal, el campo será el DNI, y el segundo campo será un campo lógico que me dirá si un determinado registro esta o no bloqueado, es decir cuando busco a una persona, lo primero que hago es ir a esta tabla, y buscar el contenido del campo DNI, si no es el mismo que yo pido, busco los datos en la tabla, genero un registro en la tabla de bloqueos y lo pongo a true, si ya existe y está bloqueado informo al usuario que este registro está bloqueado en este momento y le muestro los datos en modo lectura.