Страница: 1 |
Страница: 1 |
Вопрос: SQLAllocHandle
Добавлено: 26.07.05 18:07
Автор вопроса: Hunter2003 | ICQ: 287314254
Народ, кто знает как юзать функцию SQLAllocHandle из ODBC32.dll? И подскажите как через API можно получить список Data Sources в системе.
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
.:: St!X ::.
ICQ: 339888425
Вопросов: 13
Ответов: 51
Web-сайт:
Профиль | | #1
Добавлено: 27.07.05 13:54
как функцию юзать не знаю... а вот код могу дать.
Option Explicit
Private Declare Function SQLDataSources Lib "ODBC32.DLL" (ByVal henv&, ByVal fDirection%, ByVal szDSN$, ByVal cbDSNMax%, pcbDSN%, ByVal szDescription$, ByVal cbDescriptionMax%, pcbDescription As Integer
Private Declare Function SQLAllocEnv% Lib "ODBC32.DLL" (env&
Const SQL_SUCCESS As Long = 0
Const SQL_FETCH_NEXT As Long = 1
Sub GetDSNsAndDrivers()
Dim i As Integer
Dim sDSNItem As String * 1024
Dim sDRVItem As String * 1024
Dim sDSN As String
Dim sDRV As String
Dim iDSNLen As Integer
Dim iDRVLen As Integer
Dim lHenv As Long 'handle to the environment
On Error Resume Next
lstDSN.AddItem "None)"
'get the DSNs
If SQLAllocEnv(lHenv) <> -1 Then
Do Until i <> SQL_SUCCESS
sDSNItem = Space$(1024)
sDRVItem = Space$(1024)
i = SQLDataSources(lHenv, SQL_FETCH_NEXT, sDSNItem, 1024, iDSNLen, sDRVItem, 1024, iDRVLen)
sDSN = Left$(sDSNItem, iDSNLen)
sDRV = Left$(sDRVItem, iDRVLen)
If sDSN <> Space(iDSNLen) Then
lstDSN.AddItem sDSN
lstDrivers.AddItem sDRV '---optional - driver value returned
End If
Loop
End If
'remove the dups
If lstDSN.ListCount > 0 Then
With lstDrivers
If .ListCount > 1 Then
i = 0
While i < .ListCount
If .List(i) = .List(i + 1) Then
.RemoveItem (i)
Else
i = i + 1
End If
Wend
End If
End With
End If
lstDSN.ListIndex = 0
End Sub
Private Sub Form_Load()
GetDSNsAndDrivers
On Error Resume Next
lstDSN.ListIndex = 0
lstDrivers.ListIndex = 0
End Sub
Номер ответа: 2
Автор ответа:
Hunter2003
ICQ: 287314254
Вопросов: 14
Ответов: 72
Профиль | | #2
Добавлено: 27.07.05 16:04
Спасибо