Página 1 de 1
LETODB: Conexão perdida
Enviado: 18 Mar 2011 19:49
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.
Re: LETODB: Conexão perdida
Enviado: 19 Mar 2011 06:17
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.)
Re: LETODB: Conexão perdida
Enviado: 22 Mar 2011 20:01
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
Re: LETODB: Conexão perdida
Enviado: 26 Mar 2011 22:40
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