Fórum EIBInterBaseError with message invalid transaction handle #617769
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
Curtir tópico
+ 0Posts
15/03/2022
Nomad
https://stackoverflow.com/questions/39471426/error-invalid-transaction-handle-expecting-explicit-transaction-start-execut
Gostei + 0
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!
Gostei + 0
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!
Gostei + 0
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
Gostei + 0
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?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)