Delphi FireDac Evento OnError com Erro?

PostgreSQL

Delphi

17/08/2018

Olá, vou tentar descrever o cenário:

1-O DB (dbconnection do firedac) está configurado como "AutoReconnect = TRUE"
2-Aplicação inicia e conecta no DB
3-Executo uma rotina que acessa o banco, tudo ok.
4-Desconecto o PC da rede (propositalmente, para testar)
5-Na Aplicação executo um comando sql direto no componente DB. ex: DB.ExecSqlScalar( 'um select valido qualquer')
6-É disparado o evento ONERROR (pois o PC está desconectado da rede) com a exceção: "No connection to the server"
7-Reconecto o PC na rede
8-Tento executar o comando do passo 5 acima, ou qualquer outro comando SQL, quer seja no banco diretamente ou por TFDQuery
9-Novamente é disparado o evento ONERROR com a mesma exceção (fica nesse loop e não conecta mais)
.
Tenho os eventos ONLOST e ONRECOVER com código para tratar a questão de reconectar, porém eles não são disparados nunca.
.
Pesquisei na Internet e descobri que mais pessoas tiveram o mesmo problema, mas não encontrei a solução.
.
Alguém aqui teria uma luz sobre o assunto?
Alberto

Alberto

Curtidas 1

Respostas

Guilherme Barizão

Guilherme Barizão

17/08/2018

Tenho o mesmo problema. Ainda não achei solução.
GOSTEI 0
Pedro Deola

Pedro Deola

17/08/2018

Estou com o mesmo problema, alguém tem uma dica?
GOSTEI 0
Mário Reis

Mário Reis

17/08/2018

Já viram os exemplos que vêm junto com o Delphi? Se não experimente aqui:
C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\15.0\\Samples\\Object Pascal\\Database\\FireDAC\\Samples\\
depois aqui dentro há mais uns quantos:
Comp Layer\\TFDConnection\\ConnectionDefs\\
espero ter ajudado
GOSTEI 0
Pedro Deola

Pedro Deola

17/08/2018

Bom dia

Resolvi meu problema da seguinte forma.

O evento OnRecover coloquei o seguinte código

AAction:=faRetry;


Coloquei também um timer de 30 segundos com um ping.
ADOCONN_S.Ping;


Resolveu meu problema.
GOSTEI 0
POSTAR