PDA

Ver la Versión Completa : bloqueo de registros


barrene
29-07-2003, 10:42:03
Hola a todos
Tengo un problema con una aplicación con componentes ADO conectados a una base de datos de Oracle.
El caso es que necesito bloquear un registro, porque puede darse el caso de que dos usuarios estén modificando el mismo registro a la vez. Se que poniendo la Objeto Adotable en modo pesismista se bloquea el registro, pero necesito mostrar un mensaje al segundo usuario en caso de que intente modificar un registro bloqueado y no se como averiguar si el registro esta bloqueado o no

Cabanyaler
29-07-2003, 11:36:14
Hola, en Oracle no he trabajado nunca, pero a poco que se asemeje al SQl Server, cuando el segundo usuario intente grabar sus datos modificados del registro "bloqueado en pesimista", el SGDb le avisará con una excepción indicandole que los datos han cambiado desde la última vez en que fueron leidos. basta con capturar esta excepción con un try..except y tratarla como más te convenga.
Tiene la pega que si se trabaja con mucha informació en esa tupla y el usuario está 5 min. editando los datos, pierde este tiempo hasta que salta la excepción por intentar aplicar los cambios al hacer la aceptación, pero este es el metodo más rápido de programar para la concurrencia. Depende de la probabilidad de que se produzca esta situación de que merezca la pena programar algo para que no pierda tanto tiempo.
En orincipio yo lo tengo así y me funciona bien, aunque la probabilidad de concurrencia a la misma tupla con la naturaleza de la información con la que trabajamos es escasa.

Dee todos modos en la dirección www.q3.nu puedes encontrar en el indice de trucos como realizar un bloqueo de forma manual desde código, y aunque no sé de que tipo son los DataSet con los que trabaja este truco igual te pueden ayudar dando alguna pista más.

Suerte.