Você está usando tclientdataset ou semelhantes? Esses
componentes já fazem o controle de transações.

 

  _____  

De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de Ricardo Lima
Enviada em: sexta-feira, 14 de agosto de 2009 16:54
Para: delphi-br@yahoogrupos.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> ter.com/lpt





[As partes desta mensagem que não continham texto foram removidas]

Responder a