Perdón por meter mi cuchara, yo utilizo estas funciones. La primera consulta un '1' de la base de datos. Si no hay conección se reconecta.
FUNCTION ChecaConDB
m.ResCon = SQLEXEC(m.lih,"select 1","csrNow")
IF m.Rescon = -1
=ConectaDB()
ENDIF
RETURN
FUNCTION ConectaDB
m.lih = SQLSTRINGCONNECT(lCadCon)
IF m.lih < 0
IF AERROR(laError) > 0
lcMsg = ""
FOR ln = 1 TO ALEN(laError,2)
lcMsg = lcMsg + TRANSFORM(laError(1,ln)) + CHR(13)
ENDFOR
MESSAGEBOX(lcMsg, 16, "Error de ODBC")
ENDIF
ENDIF
RETURN