VB6, ADO und ODBC-Systeme-DSN's

Hallo,

ich möchte mit Hilfe eines kleines VB-Prgramms auf ODBC-Datenquelle zugreifen können.

Dazu möchte ich vorher alle System-DSN’s in einer Listbox zur Auswahl anbieten.

Kann mir jemand sagen, wie ich an die DSN-Namen ran komme?

Würde mich über einen Tip sehr freuen.

Gruß Carlos

Soweit ich weiss, gibt es dafür eine API-Funktion. Doch ich kenne ihren Namen nicht. Warscheinlich ist es irgendwas mit DSN.

cu
Patrik

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo!

ich moechte mit Hilfe eines kleines VB-Prgramms auf
ODBC-Datenquelle zugreifen koennen.

Dazu moechte ich vorher alle System-DSN’s in einer Listbox zur
Auswahl anbieten.

Kann mir jemand sagen, wie ich an die DSN-Namen ran komme?

Wenn Du VB6 Prof. hast, kannst Du mit Formular | Hinzufuegen
eine „ODBC-Anmeldung“ auswaehlen. Darin sind alle notwendigen
Deklarationen und Funktionen enthalten.

Ansonsten hier das wichtigste aus dem Modul:

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&amp:wink:
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 'Zugriffsnummer zur Umgebung

 On Error Resume Next
 cboDSNList.AddItem "(None)"

 'DSNs abrufen
 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 = VBA.Left(sDSNItem, iDSNLen)
 sDRV = VBA.Left(sDRVItem, iDRVLen)

 If sDSN Space(iDSNLen) Then
 cboDSNList.AddItem sDSN
 cboDrivers.AddItem sDRV
 End If
 Loop
 End If
 'Duplikate entfernen
 If cboDSNList.ListCount \> 0 Then
 With cboDrivers
 If .ListCount \> 1 Then
 i = 0
 While i