Ver Mensaje Individual
  #3  
Antiguo 13-10-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Cita:
Empezado por chele
Ah se me olvidaba, un ejemplo del codigo :

Código:
 
 function ComptadorAsegurados: integer;
 var num: integer;
 
 begin
 	  dmcontadores.contAsegurados.open;
 	  dmcontadores.contAsegurados.edit;
 	  num := dmcontadores.contAsegurados.fieldbyname('codaseg').value;
 	  dmcontadores.contAsegurados.fieldbyname('codaseg').value := 
dmcontadores.contAsegurados.fieldbyname('codaseg').value + 1;
 	  dmcontadores.contAsegurados.post;
 	  dmcontadores.contAsegurados.close;
 	  result := num;
 end;
Sería conveniente que dijeras que BD estas usando, componentes de acceso y cuantos usuarios estan accediendo al sistema.

Sin esta información, lo único que puedo decirte es que DeadLock es un "abrazo mortal" una transacción está intentando modificar un registro que está bloqueado por otro usuario/proceso/transacción.

Código Delphi [-]
 
 function ComptadorAsegurados: integer;
 var num: integer;
 
 begin
     dmcontadores.contAsegurados.open;
     num := dmcontadores.contAsegurados.fieldbyname('codaseg').value;
     dmcontadores.contAsegurados.edit;
     dmcontadores.contAsegurados.fieldbyname('codaseg').value := num+1;
     dmcontadores.contAsegurados.post;
     dmcontadores.contAsegurados.close;
     result := num;
 end;

Yo propondría este otro código. Que bloquea el registro justo antes de modificar el valor, y además no hace una lectura del mismo registro una vez que ya se encuentra bloqueado por escritura.

Saludos y espero que al menos, te ayude a intuir el error.

PD: Edita tu mensaje y pon en otra línea ese texto que es tan largo y hace aparecer la barra de scroll horizontal Gracias.
Responder Con Cita