So erstellen Sie eine DSN-lose Verbindung mit SQL Server für verknüpfte Tabellen in Access

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 892490 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
892490 How to create a DSN-less connection to SQL Server for linked tables in Access
Fortgeschritten: Erfordert umfangreiche Kenntnisse in den Bereichen Programmieren, Interoperabilität und Mehrbenutzeranwendungen.

Dieser Artikel bezieht sich ausschließlich auf eine Microsoft Access-Datenbank (.accdb oder .mdb).
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Einführung

Im vorliegenden Artikel wird erläutert, wie Sie eine Verbindung mit SQL Server für verknüpfte Tabellen in Microsoft Access erstellen, die keinen Datenquellennamen (Data Source Name = DSN) verwendet. Verbindungen dieser Art werden auch als DSN-lose Verbindungen bezeichnet. Die Beispiele in diesem Artikel beziehen sich auf Microsoft Office Access 2007, Microsoft Office Access 2003 und Microsoft Access 2002.

Weitere Informationen

Sie können einen DSN dazu benutzen, verknüpfte SQL Server-Tabellen in Microsoft Access zu erstellen. Wenn Sie die Datenbank aber auf einen anderen Computer umziehen, müssen Sie den DSN auf dem betreffenden Computer neu erstellen. Diese Vorgehensweise kann problematisch sein, wenn Sie sie auf mehreren Computern ausführen müssen. Wird diese Vorgehensweise nicht richtig ausgeführt, so können die verknüpften Tabellen den DSN eventuell nicht finden. Deshalb können sich die verknüpften Tabellen unter Umständen nicht mit SQL Server verbinden.

Wenn Sie eine Verknüpfung für eine SQL Server-Tabelle erstellen, diese aber nicht mit einem DSN im Dialogfeld Datenquellen hart codieren möchten, sollten Sie eine der folgenden Methoden für das Erstellen einer DSN-losen Verbindung mit SQL Server verwenden.

Methode 1: Methode "CreateTableDef" verwenden

Mit der Methode CreateTableDef können Sie eine verknüpfte Tabelle erstellen. Hierbei erstellen Sie ein neues Modul und fügen dem Modul die Funktion AttachDSNLessTable hinzu.
'//Name     :   AttachDSNLessTable
'//Purpose  :   Create a linked table to SQL Server without using a DSN
'//Parameters
'//     stLocalTableName: Name of the table that you are creating in the current database
'//     stRemoteTableName: Name of the table that you are linking to on the SQL Server database
'//     stServer: Name of the SQL Server that you are linking to
'//     stDatabase: Name of the SQL Server database that you are linking to
'//     stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection
'//     stPassword: SQL Server user password
Function AttachDSNLessTable(stLocalTableName As String, stRemoteTableName As String, stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String)
    On Error GoTo AttachDSNLessTable_Err
    Dim td As TableDef
    Dim stConnect As String
    
    For Each td In CurrentDb.TableDefs
        If td.Name = stLocalTableName Then
            CurrentDb.TableDefs.Delete stLocalTableName
        End If
    Next
      
    If Len(stUsername) = 0 Then
        '//Use trusted authentication if stUsername is not supplied.
        stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"
    Else
        '//WARNING: This will save the username and the password with the linked table information.
        stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword
    End If
    Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)
    CurrentDb.TableDefs.Append td
    AttachDSNLessTable = True
    Exit Function

AttachDSNLessTable_Err:
    
    AttachDSNLessTable = False
    MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.Description

End Function
Für den Aufruf der Funktion AttachDSNLessTable fügen Sie Code hinzu, der einem der beiden Codebeispiele im Makro AutoExec oder im Ereignis Form_Open des Startformulars ähnelt:
  • Wenn Sie das AutoExec-Makro benutzen, rufen Sie die Funktion AttachDSNLessTable auf und übergeben dann Parameter, die in etwa den folgenden aus der RunCode-Aktion entsprechen.
        AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
    
  • Wenn Sie das Startformular benutzen, fügen Sie Code zum Ereignis Form_Open hinzu, der in etwa wie unten aussieht.
    Private Sub Form_Open(Cancel As Integer)
        If AttachDSNLessTable("authors", "authors", "(local)", "pubs", "", "") Then
            '// All is okay.
        Else
            '// Not okay.
        End If
    End Sub
    Hinweis: Sie müssen Ihre Programmlogik anpassen, wenn Sie mehr als eine verknüpfte Tabelle zur Access-Datenbank hinzufügen möchten.

Methode 2: Methode "DAO.RegisterDatabase" verwenden

Mit der Methode DAO.RegisterDatabase können Sie eine DSN-Verbindung im AutoExec-Makro oder Startformular erstellen. Zwar ist mit dieser Methode weiterhin eine DSN-Verbindung erforderlich, das Problem wird jedoch durch das Erstellen einer DSN-Verbindung im Code gelöst. Wenn Sie die Methode verwenden möchten, erstellen Sie ein neues Modul und fügen Sie dem Modul die Funktion CreateDSNConnection hinzu.
'//Name     :   CreateDSNConnection
'//Purpose  :   Create a DSN to link tables to SQL Server
'//Parameters
'//     stServer: Name of SQL Server that you are linking to
'//     stDatabase: Name of the SQL Server database that you are linking to
'//     stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection
'//     stPassword: SQL Server user password
Function CreateDSNConnection(stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String) As Boolean
    On Error GoTo CreateDSNConnection_Err

    Dim stConnect As String
    
    If Len(stUsername) = 0 Then
        '//Use trusted authentication if stUsername is not supplied.
        stConnect = "Description=myDSN" & vbCr & "SERVER=" & stServer & vbCr & "DATABASE=" & stDatabase & vbCr & "Trusted_Connection=Yes"
    Else
        stConnect = "Description=myDSN" & vbCr & "SERVER=" & stServer & vbCr & "DATABASE=" & stDatabase & vbCr 
    End If
    
    DBEngine.RegisterDatabase "myDSN", "SQL Server", True, stConnect
        
    '// Add error checking.
    CreateDSNConnection = True
    Exit Function
CreateDSNConnection_Err:
    
    CreateDSNConnection = False
    MsgBox "CreateDSNConnection encountered an unexpected error: " & Err.Description
    
End Function
Hinweis: Beim erneuten Aufruf der Methode RegisterDatabase wird der DSN aktualisiert.

Für den Aufruf der Funktion CreateDSNConnection fügen Sie Code hinzu, der einem der beiden Codebeispiele im Makro AutoExec oder im Ereignis Form_Open des Startformulars ähnelt:
  • Wenn Sie das AutoExec-Makro benutzen, rufen Sie die Funktion CreateDSNConnection auf und übergeben dann Parameter, die in etwa den folgenden aus der RunCode-Aktion entsprechen.
        CreateDSNConnection ("(local)", "pubs", "", "")
    
  • Wenn Sie das Startformular benutzen, fügen Sie Code zum Ereignis Form_Open hinzu, der in etwa wie unten aussieht.
    Private Sub Form_Open(Cancel As Integer)
        If CreateDSNConnection("(local)", "pubs", "", "") Then
            '// All is okay.
        Else
            '// Not okay.
        End If
    End Sub
Hinweis: Diese Methode setzt voraus, dass Sie die mit SQL Server verknüpften Tabellen bereits in der Access-Datenbank mit "myDSN" als DSN-Name erstellt haben.

Eigenschaften

Artikel-ID: 892490 - Geändert am: Dienstag, 3. Juni 2008 - Version: 1.6
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Keywords: 
kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com