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.984 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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. |
||||||||||||||||
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. |