Werfen Sie einmal einen Blick auf die im System eingerichteten Datenverbindungen, die als ODBC-Datenquelle in der Systemsteuerung eingerichtet sind. Unser heutiger Tipp zeigt, wie man genau diese Auflistung direkt aus der eigenen Anwendung heraus auslesen kann. Fügen Sie nachfolgende Code in ein Modul ein: Option Explicit ' benötigte Deklarationen Private Declare Function SQLAllocEnv Lib "odbc32.dll" ( _ ByRef env As Long) As Integer Private Declare Function SQLDataSources Lib "odbc32.dll" ( _ ByVal henv As Long, _ ByVal fDirection As Integer, _ ByVal szDSN As String, _ ByVal cbDSNMax As Integer, _ pcbDSN As Integer, _ ByVal szDescription As String, _ ByVal cbDescriptionMax As Integer, _ pcbDescription As Integer) As Integer Private Declare Function SQLFreeEnv Lib "odbc32.dll" ( _ ByVal henv As Long) As Integer Private Const SQL_SUCCESS = 0 Private Const SQL_FETCH_FIRST_USER = 31 Private Const SQL_FETCH_FIRST_SYSTEM = 32 Private Const SQL_FETCH_NEXT = 1 ' Struktur für die Rückgabe der DSN-Einträge Public Type tDSN DSNName As String Description As String End Type ' Aufzählung Public Enum eDSN SYSTEMDSN = 0 USERDSN = 1 End Enum ' alle vorhandenen System-/Benutzer-DSN Einträge ermitteln Public Function GetAllSystemDSN(ByRef DSN() As tDSN, _ Optional ByVal DSNType As eDSN = SYSTEMDSN) As Long Dim nResult As Integer Dim nHandle As Long Dim sDSN As String * 1024 Dim sDescr As String * 1024 Dim nLenDSN As Integer Dim nDescrLen As Integer Dim nCount As Long nCount = 0 ' Handle ermitteln nResult = SQLAllocEnv(nHandle) If nResult <> -1 Then If DSNType = SYSTEMDSN Then ' ersten System DSN Eintrag ermitteln nResult = SQLDataSources(nHandle, SQL_FETCH_FIRST_SYSTEM, _ sDSN, Len(sDSN), nLenDSN, sDescr, Len(sDescr), nDescrLen) Else ' ersten Benutzer DSN Eintrag ermitteln nResult = SQLDataSources(nHandle, SQL_FETCH_FIRST_USER, _ sDSN, Len(sDSN), nLenDSN, sDescr, Len(sDescr), nDescrLen) End If If nResult = SQL_SUCCESS Then ' Rückgabe in tDSN-Struktur schreiben nCount = nCount + 1 ReDim Preserve DSN(nCount - 1) With DSN(nCount - 1) .DSNName = Left$(sDSN, nLenDSN) .Description = Left$(sDescr, nDescrLen) End With ' jetzt nach weiteren Einträgen suchen Do Until nResult <> SQL_SUCCESS nResult = SQLDataSources(nHandle, SQL_FETCH_NEXT, _ sDSN, Len(sDSN), nLenDSN, sDescr, Len(sDescr), nDescrLen) If nResult = SQL_SUCCESS Then ' Rückgabewert wieder in tDSN-Struktur speichern nCount = nCount + 1 ReDim Preserve DSN(nCount - 1) With DSN(nCount - 1) .DSNName = Left$(sDSN, nLenDSN) .Description = Left$(sDescr, nDescrLen) End With End If Loop End If End If ' Ressourcen wieder freigeben SQLFreeEnv nHandle ' nCount = Anzahl gefundener Einträge GetAllSystemDSN = nCount End Function Aufrufbeispiel: Dim DSN() As tDSN Dim nCount As Long nCount = GetAllSystemDSN(DSN()) If nCount > 0 Then Dim i As Long For i = 0 To nCount - 1 Combo1.AddItem DSN(i).DSNName Next i End If Sollen hingegen die Benutzer-DSN Einträge angezeigt werden, einfach den Parameter USERDSN angeben: nCount = GetAllSystemDSN(DSN(), USERDSN) Dieser Tipp wurde bereits 13.962 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |