vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Datenbanken · Sonstiges   |   VB-Versionen: VB613.03.06
Benutzer-DSN / System-DSN per Code erstellen

Dieser Tipp zeigt, wie man eine Datenverbindung dauerhaft als Benutzer-DSN bzw. System-DSN per Code erstellen kann.

Autor:   Dieter OtterBewertung:  Views:  25.761 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Dieser Tipp zeigt, wie man eine Datenverbindung dauerhaft als Benutzer-DSN bzw. System-DSN per Code erstellen kann (Systemsteuerung - Verwaltung - ODBC-Datenquellen).

Fügen Sie nachfolgenden Code in ein Modul ein:

Option Explicit
 
' API-Deklaration
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" ( _
  ByVal hwndParent As Long, _
  ByVal fRequest As Long, _
  ByVal lpszDriver As String, _
  ByVal lpszAttributes As String) As Long
 
' Konstanten
Private Const ODBC_ADD_DSN = 1
Private Const ODBC_ADD_SYS_DSN = 4
' DSN-Verbindung erstellen
Public Function AddDSN(ByVal sDSNName As String, _
  ByVal sPath As String, _
  Optional ByVal sDescription As String = "", _
  Optional ByVal sDriverName As String = "Microsoft Access Driver (*.mdb)", _
  Optional ByVal sUser As String = "", _
  Optional ByVal sPwd As String = "", _
  Optional ByVal bSystemDSN As Boolean = False) As Boolean
 
  Dim nResult As Long
  Dim nRequest As Long
  Dim sAttr As String
 
  ' Benutzer-DSN oder System-DSN?
  nRequest = IIf(bSystemDSN, ODBC_ADD_SYS_DSN, ODBC_ADD_DSN)
 
  If InStr(1, sDriverName, "SQL Server", vbTextCompare) > 0 Then
    ' SQL-Server
    Dim sServer As String
 
    ' Prüfen, ob Serverpfad angegeben...
    If InStr(sPath, "\") > 0 Then
      sServer = Left$(sPath, InStr(sPath, "\") - 1)
      sPath = Mid$(sPath, InStr(sPath, "\") + 1)
    Else
      ' Falls nicht, lokalen SQL-Server verwenden
      sServer = "(local)"
    End If
 
    sAttr = "DSN=" + sDSNName & Chr$(0) & _
      "SERVER=" & sServer & Chr$(0) & _
      "DATABASE=" & sPath & Chr$(0) & _
      "TRUSTED_CONNECTION=True" & Chr$(0) & _
      "DESCRIPTION=" + sDescription & Chr$(0)
  Else
    ' Verbindungs-Attribute
    sAttr = "DSN=" + sDSNName & Chr$(0) & _
      "DBQ=" + sPath & Chr$(0) & _
      "UID=" & sUser & Chr$(0) & _
      "PWD=" & sPwd & Chr$(0) & _
      "DESCRIPTION=" + sDescription & Chr$(0)
  End If
 
  ' DSN-Verbindung einrichten
  nResult = SQLConfigDataSource(0&, nRequest, sDriverName & Chr$(0), sAttr)
  AddDSN = (nResult = 1)
End Function

Nachfolgend eine Auflistung der wichtigsten Datenbank-Treiber, die im optionalen Parameter sDriverName angegeben werden können:

  • Microsoft Access Driver (*.mdb)
  • Microsoft Excel Driver (*.xls)
  • Microsoft Text Driver (*.txt; *.csv)
  • SQL Server
  • Microsoft dBASE Driver (*.dbf)

Beispiel 1:
Es soll eine Benutzer-DSN für den Zugriff auf die Microsoft Access-Datenbank erstellt werden. Die Datenbank selbst befindet sich im Applikationsverzeichnis.

Dim bResult As Boolean
bResult = AddDSN("MyAccessDSN", App.Path & "\KUNDEN.MDB")
If Not bResult Then MsgBox "DSN konnte nicht erstellt werden!"

Beispiel 2:
Es soll eine System-DSN für den Zugriff auf die Datenbank "KUNDEN" im MS-SQL-Server erstellt werden. Der SQL-Server ist hierbei lokal installiert.

Dim bResult As Boolean
bResult = AddDSN("MySQLDSN", "KUNDEN", , "SQL Server", , , True)
If Not bResult Then MsgBox "DSN konnte nicht erstellt werden!"

Beispiel 3:
Es soll eine Benutzer-DSN für den Zugriff auf die Datenbank "KUNDEN" im MS-SQL-Server erstellt werden. Der SQL-Server ist hierbei im Netzwerk auf einem anderen Rechner installiert (Rechnername SERVER).

Dim bResult As Boolean
bResult = AddDSN("MySQLDSN", "SERVER\KUNDEN", , "SQL Server")
If Not bResult Then MsgBox "DSN konnte nicht erstellt werden!"



Anzeige

Kauftipp Unser Dauerbrenner!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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.