Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

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

Der Support für Office 2003 wurde eingestellt

Microsoft stellte am 8. April 2014 den Support für Office 2003 ein. Diese Änderung wirkt sich auf Ihre Softwareupdates und Sicherheitsoptionen aus. Erfahren Sie, was das für Sie bedeutet und wie Sie Ihren Schutz aufrechterhalten können.

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).
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 passwordFunction 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 FunctionAttachDSNLessTable_Err:        AttachDSNLessTable = False    MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.DescriptionEnd 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 IfEnd 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 passwordFunction 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 FunctionCreateDSNConnection_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 IfEnd 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.
ACC2002 ACC2003 Jet ODBC SQL Server VB VBA
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.
Eigenschaften

Artikelnummer: 892490 – Letzte Überarbeitung: 06/03/2008 17:54:43 – Revision: 1.6

Microsoft Office Access 2007, Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition

  • kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490
Feedback
">