Acceso concurrente

Hola, tengo una duda, como puedo bloquear el acceso a un registro cuando está siendo modificado por otro usuario? Me pasa que si se abre el registro simultáneamente y un usuario modifica y graba y el otro vuelve a grabar guarda los cambios de el último usuario y pasa por arriba de lo que grabó al anterior.

hola
puedes implementar una tabla de bloqueo de registros que inserte el id del resgistro que está siendo auditado y que luego se libere
en el load compruebas si está bloqueado

y tendrás que implementar algun proceso que desbloque posibles bloqueos que se hayan quedado registrados si el usuario no desbloquea el registro mediante la operación de guardado, o en el procedo de logout del usuario.

Hola, muchas gracias por la ayuda, voy a intentar implementar eso, en el caso de que quede bloqueado te refería a que el usuario lo deje abierto y no vuelva a cerrarlo? Tendría que llevar un control del tiempo y que se cierre pasado x tiempo.

el control de tiempo puede ser un proceso que lances cada x min / x horas que desbloquee los registros, ademas en el logout del usuario limpiar todos los que hubiera

Antes debes validar que el registro no ha tenido cambios en caso contrario debes mandar alerta de que otro usuario esta usando el registro y cancelar la actualización.

Hola, hay alguna macro para verificar si alguno de los campos del registro fue modificado?
Muchas gracias!

sc_changed({Field_Name})

pero creo que eso es muy complejo, controlar a nivel de campo si se ha modificado para bloquear
creo que es mas sencillo bloquear el registro cuando está en modo edición

2 Likes

Si, el tema del bloqueo lo estoy implementando pero no me queda claro como desbloquear el registro en el caso de que el usuario cierre la ventana o vaya hacia atrás sin confirmar el update. Tendría que generar un proceso para verificar cada x tiempo, pero eso no me garantiza que el registro no siga en modo edición.

manten el bloqueo mientras se produzcan eventos en el formulario, y pasados x minutos se liberaría