Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: www.ks-brand.ru
 Профиль | | #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
Спасибо

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам