Cuando tdolphin perdía la conexión con el servidor mysql (yo cortaba la conexión de red para la prueba) se lanzaba un GPF (trabajo me costo ubicar el problema)
y esto es lo que descubri:
aca hay se lanzaba un error de FOR EACH Anidado, cambie el codigo validando si es un array (aArray)
Code: Select all | Expand
FUNCTION SqlStringFromArray( aArray )
LOCAL cItem, cString := ""
IF HB_IsArray( aArray ) .and. Len( aArray ) > 0
FOR EACH cItem IN aArray
cString += D_LowerCase( cItem ) + ", "
NEXT
cString := Left( cString, Len( cString ) - 2 )
ENDIF
RETURN cString
acá quería hacer algo como .and. ::hMysql > 0 pero esto es un puntero
osea validar que la reconexion fue correcta, para proceder a reasignar los querys, pero no halle mejor cosa que ::lError, por favor valida si es la mejor opcion
Code: Select all | Expand
METHOD ReConnect() CLASS TDolphinSrv
LOCAL oQry
::hMysql := ::Connect()
IF HB_IsArray( ::aQueries ) .and. !::lError
FOR EACH oQry IN ::aQueries
oQry:oServer := Self
oQry:Refresh()
NEXT
ENDIF
RETURN NIL
aca me parece que falta cambiar ::lError
Code: Select all | Expand
METHOD LoadQuery( lBuildData ) CLASS TDolphinQry
...
IF ! ( ::hResult == NIL )
::aStructure := MySqlResultStructure( ::hResult, lCaseSen, D_LogicalValue() )
::nRecCount := MySqlNumRows( ::hResult )
::nRecNo := Max( 1, ::nRecNo )
::nFCount := Len( ::aStructure )
::oServer:lError := .F. //NUEVO
Agregado el tdolphinsrv
Code: Select all | Expand
METHOD NetErr() INLINE ::lError
salu2
carlos vargas