Página 1 de 1
VPN - Testar conexão
Enviado: 07 Jan 2014 20:17
por Hasse
Boa tarde colegas.
Tenho uma conexão a um banco Oracle, via VPN:
Código: Selecionar todos
FUNCTION Abre_Connect()
oConexao := TOLEAUTO():New("ADODB.Connection")
oConexao:Open( c_CntStrng )
MilliSec( 2000 )
IF ValType( oConexao ) = "O"
Msg( 'Conexão ATIVA' )
ENDIF
RETURN( .T. )
O problema é que quando cai a conexão VPN o aplicativo gera erro e aborta, quando em modo janela. Em modo Mini-gui é ainda pior: O aplicativo continua a rodar, gravando log de que tudo está rodando e deletando os arquivos transmitidos.
Podem ver que tenho uma "gambiarra" testando o tipo de da variável oConexao, mas isto não me garante que a VPN está ativa, e nem que a conexão realmente existe e está ativa.
Há uma forma de testar a conexão VPN ? (em modo janela e também em MIniGui...)
VPN - Testar conexão
Enviado: 07 Jan 2014 22:59
por alxsts
Olá!
Você pode testar o método
state do objeto connection:
Código: Selecionar todos
#include "ado.ch"
FUNCTION Abre_Connect( c_CntStrng )
LOCAL oConexao
LOCAL lRet := .F.
IF c_CntStrng != NIL
oConexao := TOLEAUTO():New("ADODB.Connection")
oConexao:Open( c_CntStrng )
IF oConexao:state = adStateOpen
lRet := .T.
ENDIF
ENDIF
RETURN lRet
VPN - Testar conexão
Enviado: 08 Jan 2014 10:25
por Hasse
Funcionou perfeito, Alexandre.
Obrigado.
VPN - Testar conexão
Enviado: 08 Jan 2014 19:31
por Hasse
Acabei de testar o "oConexao:state" em situação de queda da VPN.
Parece que ele arquiva na memória o valor 1 quando da conexão inicial, e não faz o re-teste quando invocado posteriormente.
Durante uma transferência de dados eu fechei a conexão da VPN manualmente e o aplicativo continuou a rodar como se a VPN não tivesse caído.
No código abaixo o processamento não entrou no ELSE:
Código: Selecionar todos
IF l_Conex = .T. .AND. oConexao:state = adStateOpen
...
transfereValores( c_StrDados )
...
ELSE
Alert( 'Conexão INATIVA' )
ENDIF
Há alguma maneira de re-testar a conexão ou dar um refresh no "oConexao:state" ?
VPN - Testar conexão
Enviado: 12 Jan 2014 15:53
por Hasse
Boa tarde colegas.
Botei os neurônios "Tico-e-Teco" prá funcionar para tentar encontrar uma saída, e pergunto:
Para re-testar a conexão via ADO com o banco Oracle, há algum inconveniente se for enviada novamente a string de conexão ?
Explico melhor num alinha de tempo:
1)-A conexão está ABERTA e transferindo dados;
2)-Em determinado instante em que não há transmissão de dados a VPN cai;
3)-No re-início de uma nova transferência de dados, não sabendo em que status está a VPN, posso enviar novamente a string de conexão, como:
Desta forma, se a VPN não estiver ativa fatalmente terei um erro, que poderei tratar.
Caso a VPN estiver ATIVA e a Conexão com o Oracle também, este procedimento pode trazer algum inconveniente ?