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