LETODB: Conexão perdida

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

MarcosV
Usuário Nível 3
Usuário Nível 3
Mensagens: 106
Registrado em: 15 Jun 2005 20:37
Localização: Sorocaba/SP

LETODB: Conexão perdida

Mensagem por MarcosV »

Oi Pessoal,

Como Voces tratam quando acontece uma perda de conexão com Letodb ?

Daria para reconectar automaticamente e evitar o erro abaixo ?

Letodb: Erro LETO/1000 Data type error

Obrigado
Nota de Moderação:
por Maligno: O presente tópico foi movido da seção xHarbour, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com o [x]Harbour.
Editado pela última vez por Maligno em 18 Mar 2011 19:53, em um total de 1 vez.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: LETODB: Conexão perdida

Mensagem por sygecom »

Não sei se ajuda, mas eu uso assim com SQLRDD.
Coloco no errorsys.prg:

Código: Selecionar todos

   IF oError:genCode == EG_NOALIAS  // NÃO ACHOU O ALIAS ENTÃO VERIFICA A CONEXÃO
      
      Dirchange(CAMINHO_EXE())  // FORÇA A LOCALIZAÇÃO DO EXE
      IF REVISA_CONEXAO()=.F.
         DO WHILE .T.
            IF MY_MSGYESNO("Conexão com o Servidor Inativa, deseja tentar reconectar ?")
               IF ABRE_DADOS(.T.)=.T. // abre a conexão do SQLRDD
                  RETURN .T.
               ELSE
                  LOOP
               ENDIF
            ELSE
               EXIT
            ENDIF
         ENDDO
      ELSE
         IF ConectionOK()=.F.     // VEREFICA SE ESTA ATIVA A CONEXÃO
            DO WHILE .T.
               IF MY_MSGYESNO("Conexão com o Servidor Inativa, deseja tentar reconectar ?")
                  IF Abre_dados(.T.)=.T.  // abre a conexão do SQLRDD
                     RETURN .T.
                  ELSE
                     LOOP
                  ENDIF
               ELSE
                  EXIT
               ENDIF
            ENDDO
         ENDIF
      ENDIF
   ENDIF

Código: Selecionar todos

***********************
FUNCTION REVISA_CONEXAO
***********************
Local lRet:=.T.
HW_Atualiza_Dialogo("Revisando Conexão")  // firula
IF inetestaconectada( pcHOST )=.T. // pcHOST é o IP do servidor. a Função ache facil pelo forum
   HW_Atualiza_Dialogo("Conexão: OK")  // firula
ELSE
   lRet:=.F.
   MSGINFO("NÃO CONECTADO") 
   HW_Atualiza_Dialogo("Conexão: Falhou") // firula
ENDIF
Return(lRet)


********************
FUNCTION CONECTIONOK
********************
Local oSql,cSql,aret :={}
IF eTIPO_SQL="FIREBIRD"
   cSQL := "SELECT MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION"
ELSE
   cSql   := "select version()"
ENDIF
oSql   := SR_GetConnection()                         // Obtem o objeto da conexão ativa
oSql:exec(cSql,.F.,.t.,@aret)
if len(aRet) == 0
   Return(.F.)
else
   Return(.T.)
endif
Return(.F.)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
MarcosV
Usuário Nível 3
Usuário Nível 3
Mensagens: 106
Registrado em: 15 Jun 2005 20:37
Localização: Sorocaba/SP

Re: LETODB: Conexão perdida

Mensagem por MarcosV »

Obrigado Leonardo, vou tentar desta maneira que você postou, ja tentei algo semelhante, só que mais simples, na época não funcionou, eu abria os dbfs e quando retornava com Return(.T.), apresentava o mesmo erro novamente, ficava em loop.

Qualquer novidade vou postar aqui.

Porque é necessario essa função:
Dirchange(CAMINHO_EXE()) // FORÇA A LOCALIZAÇÃO DO EXE

Obrigado
Marcos Villela
x[H]arbour.org (CVS) | GtWvW+HwGui (CVS) | HbMake | Dbf | Rdd DbfCdx | LeToDb (CVS) (Implantando)
===============================================================
“Quem nunca dormiu à noite e acordou de repente, suando frio e chorando, chorando e
chorando? Se isso lhe aconteceu, então você foi apanhado pelo blues.” (Robert Johnson)
Sweet Home Chicago (Versão Blind Bulldog Blues): www.youtube.com/watch?v=J-V61vQTSZs
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: LETODB: Conexão perdida

Mensagem por sygecom »

Eu uso o dirchange para forçar a localizão atual da pasta, por que as acontece de perder o sinal com a rede e volta em seguida e por algum motivo se perde, e essa função ajuda a restabelecer o local de origem dos dbf
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder