Fórum Problemas com Delphi e SQL Server ... #391030
23/11/2010
0
Seguinte, estou tendo um problema que não consigo resolver.
Estou fazendo a migração de um sistema em Delphi 7 de Firebird para SQL Server 2005, porém, um procedimento que é simples não esta funcionando !!
Veja o que estou fazendo...
TD.GlobalID := 1;
TD.IsolationLevel := xilREADCOMMITTED;
sqlConexao.StartTransaction(TD);
Try
if cdsVenda.State in [dsInsert, dsEdit] then
cdsVenda.Post;
cdsVenda.ApplyUpdates(0);
sqlAuxiliar.Close;
sqlAuxiliar.SQL.Clear;
sqlAuxiliar.SQL.Add('SELECT @@IDENTITY AS ID FROM VENDA');
sqlAuxiliar.Open;
if cdsProdutoVenda.State in [dsInsert, dsEdit] then
cdsProdutoVenda.Post;
cdsProdutoVenda.First;
While not cdsProdutoVenda.EOF Do
begin
Try
cdsProdutoVenda.Edit;
cdsProdutoVendaCODIGO_VENDA.AsInteger := sqlAuxiliar.Fields[0].AsInteger;
cdsProdutoVenda.Post;
Finally
cdsProdutoVenda.Next;
End;
end;
cdsProdutoVenda.ApplyUpdates(0);
sqlConexao.Commit(TD);
Except
sqlConexao.Rollback(TD);
End;
Este procedimento faz inclusão de dados em duas tabelas ... e quando executo isso apenas uma fez funciona normal ... !!
Porém, quando executo este procedimento mais de uma vez (tanto faz se executá-lo em e executáveis diferentes) me retorna a seguinte mensagem de erro: "Não é possível criar uma nova conexão porque o modo usado é o de transação manual ou distribuída."
Utilizo o padrão de 3 camadas para executar o procedimento: TSQLConnection + TSQLQuery + TDataSetProvider + TClientDataSet e TDataSource.
O que pode ser???
Carlos Souza
Curtir tópico
+ 0Posts
24/11/2010
Leonardo Xavier
Gostei + 0
25/11/2010
Carlos Souza
Eu preciso poder dar um Rollback caso haja algum problema no meio do procedimento.
Gostei + 0
25/11/2010
Wilson Junior
Espero ter colaborado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)