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:

Código: Selecionar todos

   oConexao:Open( c_CntStrng )
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 ?