Rubrik: Datenbanken · Sonstiges | VB-Versionen: VB6 | 13.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 Otter | Bewertung: | Views: 25.761 |
www.tools4vb.de | System: 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!"