Как получить список всех доступных на машине DSN? - VB

Узнай цену своей работы

Формулировка задачи:

Subj? Буду очень признателен за ответ.

Решение задачи: «Как получить список всех доступных на машине DSN?»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Declare Function SQLDataSources Lib 'ODBC32.DLL' (ByVal henv&, ByVal fDirection%, ByVal szDSN$, ByVal cbDSNMax%, pcbDSN%, ByVal szDescription$, ByVal cbDescriptionMax%, pcbDescription%) As Integer
  4. Private Declare Function SQLAllocEnv% Lib 'ODBC32.DLL' (env&)
  5. Const SQL_SUCCESS As Long = 0
  6. Const SQL_FETCH_NEXT As Long = 1
  7.  
  8. Sub GetDSNsAndDrivers()
  9.   On Error Resume Next
  10.  
  11.   Dim i As Integer
  12.   Dim sDSNItem As String * 1024
  13.   Dim sDRVItem As String * 1024
  14.   Dim sDSN As String
  15.   Dim sDRV As String
  16.   Dim iDSNLen As Integer
  17.   Dim iDRVLen As Integer
  18.   Dim lHenv As Long     'handle to the environment
  19.  
  20.   cboDSNList.AddItem '(None)'
  21.  
  22.   'get the DSNs
  23.  If SQLAllocEnv(lHenv) <> -1 Then
  24.     Do Until i <> SQL_SUCCESS
  25.       sDSNItem = Space(1024)
  26.       sDRVItem = Space(1024)
  27.       i = SQLDataSources(lHenv, SQL_FETCH_NEXT, sDSNItem, 1024, iDSNLen, sDRVItem, 1024, iDRVLen)
  28.       sDSN = VBA.Left(sDSNItem, iDSNLen)
  29.       sDRV = VBA.Left(sDRVItem, iDRVLen)
  30.        
  31.       If sDSN <> Space(iDSNLen) Then
  32.         cboDSNList.AddItem sDSN
  33.         cboDrivers.AddItem sDRV
  34.       End If
  35.     Loop
  36.   End If
  37.   'remove the dupes
  38.  If cboDSNList.ListCount > 0 Then
  39.     With cboDrivers
  40.       If .ListCount > 1 Then
  41.         i = 0
  42.         While i < .ListCount
  43.           If .List(i) = .List(i + 1) Then
  44.             .RemoveItem (i)
  45.           Else
  46.             i = i + 1
  47.           End If
  48.         Wend
  49.       End If
  50.     End With
  51.   End If
  52.   cboDSNList.ListIndex = 0
  53. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.364 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы