Ver Mensaje Individual
  #6  
Antiguo 09-08-2018
ander ander is offline
Miembro
 
Registrado: may 2003
Posts: 56
Reputación: 21
ander Va por buen camino
Cita:
Empezado por ander Ver Mensaje
Tengo un TFDconnection y un TFDTransaction y a su vez varios TFDQuery .

En un principio, no tengo problemas para ejecutar este trozo de programa

Código Delphi [-]
procedure TFModulo.Write_New_Order(NUMPE:integer);
 begin
  New_Order.close;
  New_Order.SQL.clear;
  New_Order.SQL.add('UPDATE ORDERS SET N_FABRIC_S=:N_FABRIC_S,N_CLIENT_S=:N_CLIENT_S,CALIDAD=:CALIDAD');
  New_Order.SQL.add('WHERE N_PEDIDO='+''''+IntToStr(NUMPE)+'''');
  New_Order.ParamByName('N_FABRIC_S').AsString    := '1234';
  New_Order.ParamByName('N_CLIENT_S').AsString    := 'Pako';
  New_Order.ParamByName('CALIDAD')   .AsString      := 'Good';
  New_Order.EXECSQL;
  FModulo.FDTransaction.commitretaining;
 end;

Pero a cierto tiempo, me empieza a saltar este error :

Project prueba.exe raised exception class EIBNativeException with message '[FireDAC][Phys][FB] lock conflict on no wait transaction deadlock update conflicts with concurrent update

y no hay manera que se restablezca de nuevo.
Salgo del programa y vuelvo arrancarlo ,va bien de nuevo (con los mismos datos).

Alguna idea de que puede ser???

Windows 10 , Delphi 10.2 y Firebird 2.5
Gracias por vuestras respuestas
Me he pasado muchas horas mirando y haciendo pruebas con los componentes de firedac y me han surgido muchas dudas al respecto. Cuando usaba los componentes de Interbase no había tenido tantos problemas.
Lo curioso que con un TFDconnection y un TFDTransaction al hacerle FDTransaction.commit me surgía el error y si lo hacia con el FDconnection.commit me hace bien y no me da ningún error ( curioso ). Estos dos componentes están dentro de un Datamodule con algún TFDQuery . Imaginaos que tengo este Datamodule y un Form (que es el principal) y en este Form genero un programilla con una consulta e implemento el Datamodule, para acceder al TdConnection ect... Con ese programilla hago un 'Update' pero los datos en la tabla no se actualizan( ni con el commit) ,se actualizan cuando se sale del programa y vuelvo a entrar (cosa que no sucede cuando el programilla se encuentra en el datamodule ).
¿Puede ser porque en el Datamodule se han generado en el uses, todas las llamadas al firedac y en el Form no ? (No los sé)
Seguiré probando.
Responder Con Cita