Estou com um problema chato aqui, no Delphi algumas coisas que é o 
trivial não funciona.

Tenho esse trecho de código abaixo, tenho que alterar varias tabelas e 
faz tudo dentro de uma transação.
  

   StartTransaction;
   Try

      Apply_Update(cdsRecebimentos);
      Apply_Update(cdsMovimentacaoContas);
      LancaVinculosMovimentoContas;
      Apply_Update(cdsRecebimentos);
      Apply_Update(cdsMovimentoContas);
      Apply_Update(cdsCadastro);

      cdsCadastro.First;
      While Not cdsCadastro.Eof Do
      Begin
          >>>>Arqui onde gera o erro, tenho uma classe(DataModele) que 
responsavel por carregar as informações fazer alterações e gravar, porem 
no Open do dataset gera o erro
         if cdsCadastroVALOR_TOTAL_DEVIDO.AsFloat <>  
cdsCadastroVALOR_TOTAL_DEVIDO_ANTERIOR.AsFloat Then
         begin
            With 
AbreContasReceberDam(cdsCadastro.FieldByName('COD_CONTA_RECEBER').AsInteger,
                    
cdsCadastro.FieldByName('COD_EMP_CONTA_RECEBER_CAD').AsInteger) Do 
//NESSE PONTO DA  O ERRO
            Try
               DoGravar;
            Finally
               DataModule.Free;
            End;
         end;
         cdsCadastro.Next;
      End;

      CommitTransaction;
   Except
      On E: Exception Do
      Begin
         If dtmConexao.connConexao.InTransaction Then
            RollBackTransaction;
         Raise
      End;
   end;
end;

Porem não posso abrir um ClientDataSet no meio de uma transação que gera 
essa exception
"Não é possível criar uma nova conexão porque o modo usado é o de 
transação manual ou distribuída"

É uma coisa tão básica e no Delphi não funciona, desanimador isso.

Alguem tem alguma luz do por que isso esta ocorrendo.

Obrigado.

At.
Ricardo Lima

-- 
Estou utilizando a versão gratuita de SPAMfighter para usuários privados.
Foi removido 5225 emails de spam até hoje.
Os usuários pagantes não têm esta mensagem nos seus emails.
 Adquira SPAMfighter grátis aqui: http://www.spamfighter.com/lpt

Responder a