Delphi FireDac Evento OnError com Erro?
17/08/2018
0
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?
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
Curtir tópico
+ 1
Responder
Posts
05/04/2020
Mário Reis
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
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
Responder
10/04/2020
Pedro Deola
Bom dia
Resolvi meu problema da seguinte forma.
O evento OnRecover coloquei o seguinte código
Coloquei também um timer de 30 segundos com um ping.
Resolveu meu problema.
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.
Responder
Clique aqui para fazer login e interagir na Comunidade :)