IF THIS.HasValidDataSources()... * do the work ENDIF PROTECTED PROCEDURE HasValidDataSources IF THIS.ValidDataSources LOCAL lFailure, cConnect, dummy IF ATC("'SKIP_XXX'",THIS.XXXConnectionString) = 0 * try a dummy query that doesn't * "cost" too much dummy = SQLGETPROP(THIS.XXXHandle,'ConnectTimeout') lFailure = (ATC(TRANSFORM(VFPERROR_CONNECTION_HANDLE_INVALID),; THIS.ErrorMessage) > 0) OR ; ("connectivity" $ LOWER(MESSAGE())) IF lFailure * attempt to get rid of driver resource problem * now disconnect; the extra error won't hurt SQLDISCONNECT(THIS.XXXHandle) THIS.ClearError() * try a reconnect cConnect = THIS.XXXConnectionString THIS.XXXHandle = SQLCONNECT(&cConnect) lFailure = (THIS.XXXHandle < 1) ENDIF ENDIF IF NOT lFailure AND ; ATC("'SKIP_YYY'",THIS.YYYConnectionString) = 0 * do the same thing for the * next datasource ENDIF IF lFailure THIS.ValidDataSources = .F. ENDIF ENDIF RETURN THIS.ValidDataSources ENDPROC