Infelizmente ninguém respondeu, mas felizmente eu resolvi o problema e
gostaria de compartilhar a solução na lista.

1. Se for utilizar SQL de INSERT, UPDATE, DELETE dentro de uma
transação, no Delphi, com ADO, então utilize o TADOCommand
(cmd.Execute), NÃO utilize o TADOQuery (qry.ExecSQL) pois este último
ignora a transação em andamento;

2. TADOQuery somente utiliza Transações quando utilizamos os métodos
Edit/Insert/Append + Post, pois TADOQuery herda de TDataSet e
implementa a interface IProviderSupport que é utilizado nesse tipo de
implementação.

mD

--- Em delphi-br@yahoogrupos.com.br, "Marcos Douglas" <[EMAIL PROTECTED]> 
escreveu
>
> Estou tendo um problema com ADO e transação.
> O código está assim:
> try
>   conn.BeginTrans;
>   {...}
>   qry.ExecSQL;
>   conn.CommitTrans;
> except
>   conn.RollbackTrans;
> end;
> 
> Investiguei o código da unit ADODB, no Delphi, pra ver como esta
parte do
> código estava tratando a transação. Vi no código que, se eu utilizar
ExecSQL
> ou invés de Insert+Post, o ADO nem tá aí pra transação.
> 
> Estou enviando esta dúvida para que algum dos senhores possam dizer
que eu
> estou errado e que diga como deveria ser feito.
> 
> Muito obrigado.
> 
> mD
>


Responder a