Fórum Mensagem de erro ao dar um Comit na trasação "Transaction ID Not found" #389380
26/10/2010
0
Project Financeiro.exe raised exception class Exception with message 'Transaction ID not found.'. Process stopped. Use Step or Run to continue.
Gostaria de da ajuda de alguem para resolver esse problema, estou trabalhando com Delphi 7 e Firebird 2.0.5
O código onde da o erro é o seguinte:
procedure TDM.InsereCompra(aidEmpresa, aIdEstoque :Integer);
var
idCompra : Integer;
begin
idCompra := 0;
Start;
try
with spIUCompra do
begin
Params[0].AsInteger := cdsCompraID_COMPRA.AsInteger;
Params[1].AsString := cdsCompraNF_COMPRA.AsString;
Params[2].AsInteger := cdsCompraID_FORNECEDOR.AsInteger;
Params[3].AsBCD := cdsCompraVL_TOTALCOMPRA.AsFloat;
Params[4].AsInteger := cdsCompraID_SOLICITACAOCOMPRA.AsInteger;
Params[5].AsInteger := cdsCompraID_FUNCIONARIO.AsInteger;
Params[6].AsInteger := cdsCompraCFOP.AsInteger;
Params[7].AsDate := cdsCompraDT_COMPRA.AsDateTime;
ExecProc;
if cdsCompraID_COMPRA.AsInteger <> 0 then
idCompra := cdsCompraID_COMPRA.AsInteger
else
idCompra := Params[8].AsInteger;
end;
//Insere Itens
cdsItemCompra.First;
while not cdsItemCompra.Eof do
begin
with spIUItemCompra do
begin
Params[0].AsInteger := cdsItemCompraID_ITEMCOMPRA.AsInteger;
Params[1].AsInteger := idCompra;
Params[2].AsInteger := cdsItemCompraID_PRODUTO.AsInteger;
Params[3].AsBCD := cdsItemCompraQUANTIDADE.AsFloat;
Params[4].AsBCD := cdsItemCompraVL_UNIT.AsCurrency;
Params[5].AsBCD := cdsItemCompraVL_TOTAL.AsCurrency;
Params[6].AsBCD := cdsItemCompraIPI.AsCurrency;
Params[7].AsBCD := cdsItemCompraICMS.AsCurrency;
ExecProc;
end;
InsereQuantidade(aidEmpresa,aIdEstoque,cdsItemCompraID_PRODUTO.AsInteger, cdsItemCompraQUANTIDADE.AsCurrency);
cdsItemCompra.Next;
end;
Comit;
except
Rollback;
end;
end;
George Medeiros
Curtir tópico
+ 0Posts
26/10/2010
Wilson Junior
Espero ter colaborado.
Gostei + 0
26/10/2010
George Medeiros
procedure TDM.Start;
begin
Transc.IsolationLevel := xilREADCOMMITTED;
Transc.TransactionID := StrToInt(IDTransaction);
SQLConnection1.StartTransaction(Transc);
end;
procedure TDM.Comit;
begin
SQLConnection1.Commit(Transc);
end;
procedure TDM.Rollback;
begin
SQLConnection1.Rollback(Transc);
raise Exception.Create(MSG_ERRO);
end;
Gostei + 0
26/10/2010
Wilson Junior
procedure IniTransacao(Conexao: TSQLConnection; TipoTrans: TTransactionDesc);
begin
with Conexao do
begin
if not Conexao.InTransaction then
StartTransaction(TipoTrans)
;
end;
end;
procedure GravaTransacao(Conexao: TSQLConnection; TipoTrans: TTransactionDesc);
begin
with Conexao do
begin
if inTransaction then
Commit(TipoTrans)
;
end;
end;
procedure CancelTransacao(Conexao: TSQLConnection; TipoTrans: TTransactionDesc);
begin
with Conexao do
begin
if inTransaction then
Rollback(TipoTrans)
;
end;
end;
{ Dentro do OnCreate do DataModule }
TMyDataModule = class(TDataModule)
...
public
TransDesc: TTransactionDesc;
end;
procedure TMyDataModule.DataModuleCreate(Sender: TObject);
begin
TransDesc.TransactionID := 1;
TransDesc.IsolationLevel := xilREADCOMMITTED;
end;Espero ter colaborado.
Gostei + 0
26/10/2010
George Medeiros
Gostei + 0
26/10/2010
Wilson Junior
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)