Problemas com Delphi e SQL Server ...

Delphi

23/11/2010

E ai galera tudo beleza??

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

Carlos Souza

Curtidas 0

Respostas

Leonardo Xavier

Leonardo Xavier

23/11/2010

você ja tentou executar um processo de cada vez?
GOSTEI 0
Carlos Souza

Carlos Souza

23/11/2010

Não tem como fazer separado uma vez que são tabelas dependentes umas das outras ...

Eu preciso poder dar um Rollback caso haja algum problema no meio do procedimento.
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Altere "GlobalID" por "TransactionID".

Espero ter colaborado.
GOSTEI 0
POSTAR