>>>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?