>>CREATE CURSOR c_Servers; >> (cServerName C(100)) >>>>
>>LPARAMETERS tcCursor >> >>* Populate collection with available SQL servers >>#DEFINE SQL_HANDLE_ENV 1 >>#DEFINE SQL_HANDLE_DBC 2 >>#DEFINE SQL_ATTR_ODBC_VERSION 200 >>#DEFINE SQL_OV_ODBC3 3 >>#DEFINE SQL_SUCCESS 0 >>#DEFINE SQL_NEED_DATA 99 >>#DEFINE DEFAULT_RESULT_SIZE 2048 >>#DEFINE SQL_DRIVER_STR "DRIVER=SQL SERVER"; >> >>LOCAL hEnv >>LOCAL hConn >>LOCAL cInString >>LOCAL cOutString >>LOCAL nLenOutString >>LOCAL ARRAY aServerList[1] >> >>DECLARE SHORT SQLBrowseConnect IN odbc32 ; >> INTEGER ConnectionHandle, ; >> STRING InConnectionString, ; >> INTEGER StringLength1, ; >> STRING @ OutConnectionString, ; >> INTEGER BufferLength, ; >> INTEGER @ StringLength2Ptr >> >>DECLARE SHORT SQLAllocHandle IN odbc32 ; >> INTEGER HandleType, ; >> INTEGER InputHandle, ; >> INTEGER @ OutputHandlePtr >> >>DECLARE SHORT SQLFreeHandle IN odbc32 ; >> INTEGER HandleType, ; >> INTEGER Handle >> >>DECLARE SHORT SQLSetEnvAttr IN odbc32 ; >> INTEGER EnvironmentHandle, ; >> INTEGER ATTRIBUTE, ; >> INTEGER ValuePtr, ; >> INTEGER StringLength >> >> >>hEnv = 0 >>hConn = 0 >>cInString = SQL_DRIVER_STR >>cOutString = SPACE(DEFAULT_RESULT_SIZE) >>nLenOutString = 0 >> >>ZAP IN (m.tcCursor) >> >>TRY >> IF SQLAllocHandle(SQL_HANDLE_ENV, hEnv, @hEnv) == SQL_SUCCESS >> IF (SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, SQL_OV_ODBC3, 0)) == SQL_SUCCESS >> IF SQLAllocHandle(SQL_HANDLE_DBC, hEnv, @hConn) == SQL_SUCCESS >> IF (SQLBrowseConnect(hConn, @cInString, LEN(cInString), @cOutString, DEFAULT_RESULT_SIZE, @nLenOutString)) == SQL_NEED_DATA >> nCnt = ALINES(aServerList, STREXTRACT(cOutString, '{', '}'), .T., ',') >> FOR i = 1 TO nCnt >> *!* oServerCollection.AddEntity(aServerList[i]) >> INSERT INTO (m.tcCursor) (cServerName) VALUES (RTRIM(aServerList[i])) >> ENDFOR >> ENDIF >> ENDIF >> ENDIF >> ENDIF >>CATCH TO oException >> * ignore error, just return an empty collection of servers >> MESSAGEBOX(oException.Message, 0+16, _screen.caption) >>FINALLY >> IF hConn <> 0 >> SQLFreeHandle(SQL_HANDLE_DBC, hConn) >> ENDIF >> IF hEnv <> 0 >> SQLFreeHandle(SQL_HANDLE_ENV, hConn) >> ENDIF >>ENDTRY >> >> >>>>>How can I return a list of SQL servers in VFP?