*-----------------------------------------------* 函数: 获取局域网内所有SqlServer* 设计: 红雨* 时间: 2005.04.01*-----------------------------------------------Function NetEnumSqlServer( tcTableName ) m.tcTableName = Iif(Type([m.tcTableName])=[C], m.tcTableName, [TNetEnumSqlServer]) Create Cursor (m.tcTableName) ( ServerName C(254) ) 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
Local hEnv, hConn, cInString, cOutString, nLenOutString, nCnt, iCnt m.nCnt = 0 m.hEnv = 0 m.hConn = 0 m.cInString = "DRIVER=SQL SERVER" m.cOutString = Space(2048) m.nLenOutString = 0 Local Array aServerList[1]
If SQLAllocHandle(1, 0, @hEnv) = 0 If SQLSetEnvAttr(m.hEnv, 200, 3, 0) = 0 If SQLAllocHandle(2, m.hEnv, @hConn) = 0 If SQLBrowseConnect(m.hConn, @cInString, Len(m.cInString), @cOutString, 2048, @nLenOutString) = 99 m.nCnt = Alines(aServerList, Strextract(m.cOutString, '{', '}'), .T., ',') For m.iCnt = 1 To m.nCnt Insert Into (m.tcTableName) Values ( aServerList[iCnt] ) Endfor Endif Endif Endif EndifEndfunc |