Uso TClientDataSet mas como demonstrei no exemplo gravo varias tabelas, 
e tudo isso deve está dentro da mesma transação.

Vitor D. escreveu:
>  
>
> Você está usando tclientdataset ou semelhantes? Esses
> componentes já fazem o controle de transações.
>
> _____
>
> De: delphi-br@yahoogrupos.com.br 
> <mailto:delphi-br%40yahoogrupos.com.br> 
> [mailto:delphi-br@yahoogrupos.com.br 
> <mailto:delphi-br%40yahoogrupos.com.br>] Em
> nome de Ricardo Lima
> Enviada em: sexta-feira, 14 de agosto de 2009 16:54
> Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
> Assunto: [delphi-br] Delphi + DBX + Controle de Transações, sem condição,
> não funciona.
>
> 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.spamfigh
> <http://www.spamfighter.com/lpt <http://www.spamfighter.com/lpt>> 
> ter.com/lpt
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 

-- 
Estou utilizando a versão gratuita de SPAMfighter para usuários privados.
Foi removido 5226 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