Fórum Problemas com Delphi e SQL Server ... #391030

23/11/2010

0

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

Responder

Posts

24/11/2010

Leonardo Xavier

você ja tentou executar um processo de cada vez?
Responder

Gostei + 0

25/11/2010

Carlos Souza

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.
Responder

Gostei + 0

25/11/2010

Wilson Junior

Altere "GlobalID" por "TransactionID".

Espero ter colaborado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar