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