EIBInterBaseError with message invalid transaction handle
15/03/2022
0
Este sistema estava em produção em uma máquina com o Windows XP.
Começou aparecer este erro que antes não existia:
Estes erros ocorre logo após executar um select simples:
with DM.qryPesq do begin Close; SQL.Clear; SQL.Add(''SELECT id_pessoa, senha''); SQL.Add('' FROM usuario''); SQL.Add('' WHERE login = :login''); Params[0].AsString := Trim(edtLogin.Text); Open; end;
Pestana
Posts
15/03/2022
Nomad
https://stackoverflow.com/questions/39471426/error-invalid-transaction-handle-expecting-explicit-transaction-start-execut
16/03/2022
Pestana
https://stackoverflow.com/questions/39471426/error-invalid-transaction-handle-expecting-explicit-transaction-start-execut
Bom dia!
Obrigado por tentar me ajudar, mas ainda não consegui resolver o problema!
20/03/2022
Pestana
depois que o sistema registrou os eventos através desta função:
// registrar os eventos no sistema para que as estações sejam atualizadas procedure TfrmPrincipal.RegistrarEventos; var arqEventos: TStringList; caminho: string; begin arqEventos := TStringList.Create; try try caminho := ExtractFilePath(Application.ExeName)+'Eventos.cfg'; if FileExists(caminho) then begin arqEventos.LoadFromFile(caminho); with evEventoAlerta do begin UnRegisterEvents; Events.Text := arqEventos.Text; RegisterEvents; end; end; except on e: Exception do begin Application.Terminate; raise Exception.Create(e.Message); end; end; finally arqEventos.Free; end; end;
ocorre o erro quando é executado o select citado no primeiro post, se eu não registrar os eventos excluindo a função RegistrarEventos não ocorre o erro.
Alguém poderia me ajudar com este problema?
Obrigado!
21/03/2022
Raimundo Pereira
Realizei todos os testes aqui, tudo funcionou!
Tanto a parte do select quanto seu procedimento para registrar os eventos.
Var qryPesq:TFDQuery;
begin
RegistrarEventos; // Não apresentou erro e seguiu com o select.
qryPesq:=TFDQuery.Create(self);
With qryPesq do begin
Connection:=DM.CNX;
Close;
Sql.Clear;
SQL.Add(' SELECT id_pessoa, senha');
SQL.Add(' FROM usuario');
SQL.Add(' WHERE login =:login');
Params[0].AsString := Trim(edtLogin.Text);
try
Open;
ShowMessage(IntToStr(RecordCount));
Except
on E: Exception do
begin
ShowMessage('Erro: ' + E.Message );
Copie_String(SQL.Text);
end;
end;
end;
procedure TFP.RegistrarEventos; var arqEventos: TStringList; caminho: string; begin arqEventos := TStringList.Create; try try caminho := ExtractFilePath(Application.ExeName)+'Eventos.cfg'; if FileExists(caminho) then begin arqEventos.LoadFromFile(caminho); with evEventoAlerta do begin UnRegisterEvents; Events.Text := arqEventos.Text; RegisterEvents; end; end; except on e: Exception do begin Application.Terminate; raise Exception.Create(e.Message); end; end; finally arqEventos.Free; end; end;
Você precisará debugar o registrarevento ao invés da rotina do select, já que é a rotina de registrar o evento lhe impede de rodar seu select.
Eu coloquei no mesmo form >>> evEventoAlerta, debugando a rotina de registrar evento pode lhe conceder maiores informações
22/03/2022
Pestana
Sim eu debuguei o sistema e a execução passa pela a rotina RegistrarEventos sem erros, mas ao tentar abrir a query ou uma IBStoredProc para executar uma procedure do banco ocorre o erro.
O estranho é que as vezes executa a query, mas quando a linha de comando chega em uma outra função que executa o IBStoredProc acontece o erro.
Eu estou desconfiado que tem algum conflito com a transação destes componentes. Porque será que tudo funcionava bem no Delphi 7 mas agora no Delphi 10.4 ocorre estes erros?
Clique aqui para fazer login e interagir na Comunidade :)