Se producen desconexiones de la base de datos, cuando no hay actividad, así que he pensado modificar ErrSysW de la siguiente forma para capturar el error e intentar que reconecte a la base de datos.
- Code: Select all Expand view RUN
- cMessage = " Error description: " + ErrorMessage( e ) + CRLF
cErrorLog += cMessage
if AT ("WINOLE/1007", cMessage) # 0 .and. AT ("(0x800A0CB3)", cMessage) # 0
M->oAnnos:oADO:CONECTAR ()
nVeces := 1
do while nVeces < 5 .and. M->oAnnos:oADO:oCon = Nil
nVeces++
M->oAnnos:oADO:CONECTAR ()
enddo
if M->oAnnos:oADO:oCon # Nil
lRet := .t.
return lRet // Necesito que no se salga del programa. Actualmente me genera hb_out.log y se sale.
endif
endif
La variable M->oAnnos:oADO es una instancia de una clase que tengo para encapsular la conexión ADO y cuyo método CONECTAR es el siguiente :
- Code: Select all Expand view RUN
- method CONECTAR () class TAdo
::oCon := FW_OpenAdoConnection( { "MYSQL", ::cServer, ::cDataBase, ::cUser, ::cClave }, .t. )
if ::oCon == Nil
? 'Falla'
endif
return .t.
Lo que necesito es que cuando he reconectado a la base de datos no se salga del programa, como indico en el comentario de la línea "return lRet"
Uso FWH1601, Harbour 3.2 y Bcc 7.0