GARANTIR DESCONTO

Fórum Varios Begintrans, qual a ordem de Commit ? #352172

21/01/2008

0

Estou usando D6 com vários BD access com ADO e em algumas situações eu insiro dados em 3 BDs diferentes que são interligados.

Se eu inicio as transações assim:

ADOConection1.BeginTrans;
ADOConection2.BeginTrans;
ADOConection3.BeginTrans;

Existe uma ordem correta de Commit ?

Eu estou tendo problemas pois, atualiza BD2 e BD3 e não em BD1, o que tem me gerado inconsistencia de dados.

Agradeço qualquer ajuda.

Quadrado


Quadrado

Quadrado

Responder

Posts

21/01/2008

Edilcimar

depende da dependência entre tabelas, se tabela2 é dependente de tabela1, vc deve comitar primeiro a tabela1 e depois a tabela2


Responder

Gostei + 0

21/01/2008

Djjunior

sei não, não seria o caso de vc criar uma função exclusiva para dar os comiits seria algo do tipo:

procedure Commit;
begin
   if ADOConection1.InTransaction then
      ADOConection1.Commit;

   if ADOConection2.InTransaction then
      ADOConection2.Commit;

   if ADOConection3.InTransaction then
      ADOConection3.Commit;

end;


ai vc troca todos seus commits por este comando, vc ainda poderia só por termos de padronização criar outra procedure em que vc passaria por parametro a conexão e daria commit somente nela

procedure Commit(conexcao: TADOConnection); override;
begin
   if (conexcao = ADOConection1) and (ADOConection1.InTransaction) then
      ADOConection1.Commit;

   if (conexcao = ADOConection1) and (ADOConection2.InTransaction) then
      ADOConection2.Commit;

   if (conexcao = ADOConection1) and (ADOConection3.InTransaction) then
      ADOConection3.Commit;

end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar