vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: System-DSN auslesen 
Autor: ModeratorDieter (Moderator)
Datum: 21.04.08 09:36

Hierzu benötigst Du folgenden Code (in ein Modul einfügen!):
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_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
 
' alle vorhandenen System-DSN Einträge ermitteln
Public Function GetAllSystemDSN(ByRef DSN() As tDSN) As Long
  Dim nResult As Integer
  Dim nHandle As Long
  Dim sDSN As String
  Dim sDescr As String
  Dim nLenDSN As Integer
  Dim nDescrLen As Integer
  Dim nCount As Long
 
  nCount = 0
 
  ' Handle ermitteln
  nResult = SQLAllocEnv(nHandle)
  If nResult <> -1 Then
    ' ersten System DSN Eintrag ermitteln
    sDSN = Space$(1024)
    sDescr = Space$(1024)
    nResult = SQLDataSources(nHandle, SQL_FETCH_FIRST_SYSTEM, _
      sDSN, Len(sDSN), nLenDSN, sDescr, Len(sDescr), nDescrLen)
 
    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:
Um alle vorhandenen System-DSN Einträge in einer ComboBox anzuzeigen, folgenden Code verwenden:
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

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
System-DSN auslesen1.020Odde18.04.08 16:35
Re: System-DSN auslesen615ModeratorDieter21.04.08 09:36
Re: System-DSN auslesen527Odde22.04.08 16:11

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel