Gewusst wie: Verknüpfen von Back-End-Tabellen mit das allgemeine Dialogfeld-Steuerelement in Access 2000

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 209862 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Eine Microsoft Access 97-Version dieses Artikels finden Sie unter 181076.
Erweiterte: Erfordert Experten Codierung und Interoperabilität sowie Mehrbenutzerfähigkeiten.

Dieser Artikel bezieht sich ausschließlich auf eine Microsoft Access-Datenbank (.mdb).

Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel veranschaulicht das Allgemeine Dialogfeld -Steuerelement verwenden, um verknüpfte Tabellen in Ihrer Datenbank zu aktualisieren. Das Common Dialog -Steuerelement ist mit Microsoft Office 2000 Developer Edition Tools verfügbar. Die Tabellen verknüpft werden können in einer oder mehreren Back-End-Datenbanken befinden.

Ein Beispiel für eine andere Methode zum Verknüpfen von Tabellen, die Microsoft Windows-Anwendung programming Interface (API) Funktionen verwendet, finden Sie in das Beispielprogramm Developer Solutions (Solutions9.mdb). Um Solutions9.mdb zu erhalten, folgendem Artikel der Microsoft Knowledge Base:
248674ACC2000: Bestellungen und Developer Solutions Beispieldatenbanken im Microsoft Developer Network (MSDN)
Öffnen Sie die Solutions9.mdb-Datenbank, wählen Sie mehrere Datenbanken verwenden im Feld wählen eine Kategorie der Beispiele und klicken Sie auf Verknüpfen von Tabellen beim Start im Feld Wählen Sie eine Beispiel .

Weitere Informationen

Microsoft bietet Programmierbeispiele für Abbildung nur ohne Gewährleistung oder konkludent. Dies umfasst, ist jedoch nicht beschränkt auf konkludenten Garantien der Handelsüblichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der Programmiersprache, die Programmierungsbeispiele ist und mit den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden vertraut sind. Microsoft Support-Technikern helfen Erläuterung die Funktionalität einer bestimmten Prozedur, Sie werden ändert jedoch nicht diese Beispiele bieten Funktionen hinzugefügt oder Verfahren, um Ihren Anforderungen entsprechend zu erstellen. Ein Programm, Teilen Datenbankentwurf hat die Tabellen in einer Datenbank in einem freigegebenen Netzwerkspeicherort (die Back-End-Datenbank), und alle seine Abfragen, Formulare, Berichte, Makros und Module in einer anderen Datenbank auf jedem Clientcomputer (Front-End-Datenbank). Die Front-End-Datenbank, die alle Ihre Tabellen mit Back-End-Datenbank verknüpft. Wenn die Back-End-Datenbank verschoben wird, treten Fehler in Ihrem Programm. Sie können das Programm erkennen, die Back-End-Datenbank-Datei am erwarteten Speicherort nicht vorhanden ist und fordert den Benutzer für den neuen Speicherort.

Das folgende Beispiel veranschaulicht das Verknüpfen der Tabellendaten in Ihrem Programm. Diese Methode verwendet ein Formular, die ein Benutzer öffnen können, um die Back-End-Tabellen verknüpfen und anderen optionalen Formular, das automatisch die Back-End-Verknüpfung überprüfen kann, wenn die Datenbank geöffnet wird.

Es wird vorausgesetzt, dass Sie das Microsoft Common Dialog -Steuerelement, verfügen, das mit Microsoft Office 2000 Developer Edition Tools verfügbar ist. Wenn Sie nicht dieses Steuerelement haben, überspringen Sie die Browse() -Funktion im Beispiel.

Hinweis : Wenn Sie das Allgemeine Dialogfeld -Steuerelement verwenden, und Sie das Datenbankprogramm verteilen möchten, müssen Sie dem Paket- und Weitergabe-Assistenten enthalten das allgemeine Dialogfeld-Steuerelement Datei Comdlg32.ocx und zugehörige unterstützende DLL mit den Setupdateien. Weitere Informationen zur Verwendung der Paket- und Weitergabe-Assistent finden Sie in den im Abschnitt "Informationsquellen" dieses Artikels aufgeführten Artikeln.

Methode zum Back-End-Datenbanktabellen erneut verknüpfen

Vorsicht : Wenn Sie die in diesem Beispiel beschriebenen Schritte ausführen, ändern Sie die Beispieldatenbank Nordwind.mdb. Sie sollten daher eine Sicherungskopie der Datei "Nordwind.mdb" erstellen und diese Schritte in einer Kopie der Datenbank ausführen.

  1. Erstellen Sie eine neue leere Access-Datenbankdatei und nennen Sie es FrontEnd.mdb .
  2. Im Menü Datei auf Externe Daten , und klicken Sie dann auf Tabellen verknüpfen .
  3. Auswahl die Beispieldatenbank "Nordwind.mdb" wechseln Sie, und klicken Sie dann auf Verknüpfung . Klicken Sie im Dialogfeld Tabellen verknüpfen klicken Sie auf Alles markieren , und klicken Sie dann auf OK .
  4. Erstellen Sie das folgende neue Formular auf einer Tabelle oder Abfrage in der Entwurfsansicht nicht basiert:
    Formular: FrmNewDataFile

    Textfeld:
    Name: TxtFileName
    Breite: 3 "
    Allgemeine Dialogfeld-Steuerelement:
    Name: xDialog
    Befehlsschaltfläche:
    Name: CmdBrowse
    Beschriftung: Durchsuchen...
    Auf Click: =Browse()
    Befehlsschaltfläche:
    Name: CmdLinkNew
    Beschriftung: Aktualisieren links
    Auf Click: =Processtables()
    Befehlsschaltfläche:
    Name: CmdCancel
    Beschriftung: Abbrechen
    BeimKlicken: [Ereignisprozedur]
    Abbrechen: Ja
  5. Klicken Sie im Menü Ansicht auf Code .
  6. Geben oder fügen Sie die folgende Prozedur:
    Private Sub cmdCancel_Click()
       On Error GoTo Err_cmdCancel_Click
     
       MsgBox "Link to new back-end cancelled", vbExclamation, "Cancel Refresh Link"
       DoCmd.Close acForm, Me.Name
    
    Exit_cmdCancel_Click:
       Exit Sub
    
    Err_cmdCancel_Click:
       MsgBox Err.Description
       Resume Exit_cmdCancel_Click
    
    End Sub
    					
  7. Klicken Sie im Debuggen auf Kompilieren FrontEnd .
  8. Speichern Sie das FrmNewDataFile-Formular und schließen Sie es.
  9. Klicken Sie im Datenbankfenster auf Module und klicken Sie auf neu .
  10. Im Menü Extras klicken Sie auf Verweise auf Microsoft DAO 3.6-Objektbibliothek , wenn es nicht bereits aktiviert ist, und klicken Sie dann auf OK .
  11. Geben oder fügen Sie den folgenden Code:
    Dim UnProcessed As New Collection
           
    Public Function Browse()
        ' Prompts user for back-end database file name.
        On Error GoTo Err_Browse
        
        Dim strFilename As String
        Dim oDialog As Object
        Set oDialog = [Forms]![frmNewDatafile]!xDialog.Object
        
        With oDialog                    ' Ask for new file location.
            .DialogTitle = "Please Select New Data File"
            .Filter = "Access Database(*.mdb;*.mda;*.mde;*.mdw)|" & _
            "*.mdb; *.mda; *.mde; *.mdw|All(*.*)|*.*"
            .FilterIndex = 1
            .ShowOpen
            If Len(.FileName) > 0 Then  ' user responded, put selection into text box on form.
               [Forms]![frmNewDatafile]![txtFileName] = .FileName
            End If
        End With
    
    Exit_Browse:
        Exit Function
    
    Err_Browse:
        MsgBox Err.Description
        Resume Exit_Browse
    
    End Function
    
    Public Sub AppendTables()
    
        Dim db As DAO.Database, x As Variant
        Dim strTest As String
        ' Add names of all table with invalid links to the Unprocessed Collection.
        Set db = CurrentDb
        ClearAll
        For Each x In db.TableDefs
            If Len(x.Connect) > 1 And Len(Dir(Mid(x.Connect, 11))) = 0 Then
            ' connect string exists, but file does not
                 UnProcessed.Add Item:=x.Name, Key:=x.Name
            End If
        Next
    
    End Sub
    
    Public Function ProcessTables()
    
        Dim strTest As String
        On Error GoTo Err_BeginLink
        
        ' Call procedure to add all tables with broken links into a collection.
        AppendTables
        
        ' Test for existence of file name\directory selected in Common Dialog Control.
        strTest = Dir([Forms]![frmNewDatafile]![txtFileName])
        
        On Error GoTo Err_BeginLink
        If Len(strTest) = 0 Then   ' File not found.
            MsgBox "File not found. Please try again.", vbExclamation, "Link to new data file"
            Exit Function
        End If
        
        ' Begin relinking tables.
        Relinktables (strTest)
        ' Check to see if all tables have been relinked.
        CheckifComplete
        
        DoCmd.Echo True, "Done"
        If UnProcessed.Count < 1 Then
             MsgBox "Linking to new back-end data file was successful."
        Else
             MsgBox "Not All back-end tables were successfully relinked."
        End If
        DoCmd.Close acForm, [Forms]![frmNewDatafile].Name
        
    Exit_BeginLink:
        DoCmd.Echo True
        Exit Function
        
    Err_BeginLink:
        Debug.Print Err.Number
        If Err.Number = 457 Then
            ClearAll
            Resume Next
        End If
        MsgBox Err.Number & ": " & Err.Description
        Resume Exit_BeginLink
    
    End Function
    
    Public Sub ClearAll()
        Dim x
        ' Clear any and all names from the Unprocessed Collection.
        For Each x In UnProcessed
           UnProcessed.Remove (x)
        Next
    End Sub
    
    Public Function Relinktables(strFilename As String)
    
        Dim dbbackend As DAO.Database, dblocal As DAO.Database, ws As Workspace, x, y
        Dim tdlocal As DAO.TableDef
        
        On Error GoTo Err_Relink
        
        Set dbbackend = DBEngine(0).OpenDatabase(strFilename)
        Set dblocal = CurrentDb
        
        ' If the local linked table name is found in the back-end database
        ' we're looking at, Recreate & Refresh its connect string, and then
        ' remove its name from the Unprocessed collection.
         For Each x In UnProcessed
            If Len(dblocal.TableDefs(x).Connect) > 0 Then
                For Each y In dbbackend.TableDefs
                    If y.Name = x Then
                        Set tdlocal = dblocal.TableDefs(x)
                        tdlocal.Connect = ";DATABASE=" & _
                        Trim([Forms]![frmNewDatafile]![txtFileName])
                        tdlocal.RefreshLink
                        UnProcessed.Remove (x)
                    End If
                Next
            End If
        Next
    
    Exit_Relink:
        Exit Function
    
    Err_Relink:
        MsgBox Err.Number & ": " & Err.Description
        Resume Exit_Relink
    
    End Function
    
    Public Sub CheckifComplete()
    
        Dim strTest As String, y As String, notfound As String, x
        On Error GoTo Err_BeginLink
        
        ' If there are any names left in the unprocessed collection,
        ' then continue.
        If UnProcessed.Count > 0 Then
            For Each x In UnProcessed
                notfound = notfound & x & Chr(13)
            Next
            ' List the tables that have not yet been relinked.
            y = MsgBox("The following tables were not found in " & _
            Chr(13) & Chr(13) & [Forms]![frmNewDatafile]!txtFileName _
            & ":" & Chr(13) & Chr(13) & notfound & Chr(13) & _
            "Select another database that contains the additional tables?", _
            vbQuestion + vbYesNo, "Tables not found")
            
            If y = vbNo Then
                Exit Sub
            End If
            
            ' Bring the Common Dialog Control back up.
            Browse
            strTest = Dir([Forms]![frmNewDatafile]![txtFileName])
            If Len(strTest) = 0 Then   ' File not found.
                MsgBox "File not found. Please try again.", vbExclamation, _
                "Link to new data file"
                Exit Sub
           End If
           Debug.Print "Break"
           Relinktables (strTest)
        Else
           Exit Sub
        End If
        
        CheckifComplete
        
    Exit_BeginLink:
        DoCmd.Echo True   ' Just in case of error jump.
        DoCmd.Hourglass False
        Exit Sub
    
    Err_BeginLink:
        Debug.Print Err.Number
        If Err.Number = 457 Then
            ClearAll
            Resume Next
        End If
        MsgBox Err.Number & ": " & Err.Description
        Resume Exit_BeginLink
    
    End Sub
    					
  12. Klicken Sie im Debuggen auf Kompilieren FrontEnd .
  13. Speichern Sie das Modul als RelinkCode , und schließen Sie es dann.
  14. Benennen Sie die Beispieldatenbank oder verschieben Sie es in einen anderen Ordner auf Ihrer Festplatte so dass die verknüpften Tabellen in FrontEnd.mdb müssen aktualisiert werden.
  15. Öffnen Sie das Formular FrmNewDataFile, und klicken Sie auf die Schaltfläche Durchsuchen .
  16. Klicken Sie im Dialogfeld Bitte wählen Sie neue Datendatei suchen Sie Nordwind.mdb in einem neuen Ordner, und klicken Sie dann auf Öffnen .

    Beachten Sie, dass der Pfad und Dateiname der Datenbank in das Textfeld auf dem Formular angezeigt wird.
  17. Klicken Sie auf das Formular die Schaltfläche Verknüpfungen aktualisieren .

    Beachten Sie, dass Sie die folgende Meldung angezeigt, beim Beenden der Prozedur wird:
    Verknüpfung mit neue Back-End-Daten-Datei war erfolgreich.

Erstellen eines Startformulars zum Überprüfen von verknüpfter Tabellen

Um den Verknüpfungen zu Back-End-Tabellen automatisch jedes Mal überprüfen, dass Sie die FrontEnd.mdb-Datenbank öffnen, können Sie ein ausgeblendetes Formular für diesen Zweck erstellen, indem Sie die folgenden Schritte:
  1. Erstellen Sie ein neues Formular, das nicht auf einer Tabelle oder Abfrage basiert, in der Entwurfsansicht.
  2. Klicken Sie im Menü Ansicht auf Code .
  3. Geben Sie die folgende Prozedur ausgeführt werden, wenn das Formular wird geöffnet:
    Private Sub Form_Open(Cancel As Integer)
          ' Tests a linked table for valid back-end.
          On Error GoTo Err_Form_Open
          Dim strTest As String, db As DAO.Database
          Dim td As DAO.TableDef
          Set db = CurrentDb
          For Each td In db.TableDefs
             If Len(td.Connect) > 0 Then   ' Is a linked table.
                On Error Resume Next   ' Turn off error trap.
                strTest = Dir(Mid(td.Connect, 11))   ' Check file name.
                On Error GoTo Err_Form_Open   ' Turn on error trap.
                If Len(strTest) = 0 Then   ' No matching file.
                   If MsgBox("Couldn't find the back-end file " & _
                      Mid(td.Connect, 11) & ". Please choose new data file.", _
                      vbExclamation + vbOKCancel + vbDefaultButton1, _
                      "Can't find backend data file.") = vbOK Then
                         DoCmd.OpenForm "frmNewDataFile"   ' Open prompt form.
                         DoCmd.Close acForm, Me.Name
                         Exit Sub                          ' to refresh links
                   Else
                      MsgBox "The linked tables can't find their source. " & _
                      "Please log onto network and restart the application."
                   End If
                End If
             End If
          Next   ' Loop to next tabledef.
          DoCmd.Close acForm, Me.Name
    Exit_Form_Open:
          Exit Sub
    Err_Form_Open:
          MsgBox Err.Number & ": " & Error.Description
          Resume Exit_Form_Open
          End Sub
    					
  4. Klicken Sie im Debuggen auf Kompilieren FrontEnd .
  5. Speichern Sie das Formular als FrmCheckLink, und schließen Sie es dann.
  6. Um FrmCheckLink als das Startformular auf Tools im Menü klicken Sie auf Start , wählen Sie FrmCheckLink in der Liste Formular/Seite anzeigen und klicken Sie dann auf OK .
  7. Um FrmCheckLink ein ausgeblendetes Formular machen, klicken Sie mit der rechten Maustaste auf FrmCheckLink im Datenbankfenster, klicken Sie im Kontextmenü auf Eigenschaften , aktivieren Sie das Kontrollkästchen ausgeblendet in das Dialogfeld FrmCheckLink Eigenschaften und klicken Sie dann auf OK .
  8. Verschieben Sie die Beispieldatenbank in einen anderen Ordner auf Ihrer Festplatte, sodass die verknüpften Tabellen in FrontEnd.mdb aktualisiert werden müssen.
  9. Schließen und öffnen Sie FrontEnd.mdb erneut.

    Beachten Sie , dass Ihnen jetzt sinngemäß die folgende Fehlermeldung angezeigt wird
    Die Back-End-Datei-database file kann nicht gefunden werden. Wählen Sie neue Datendatei ein.
    wobei database file der Pfad und Dateiname der Back-End-Datenbank ist.

    Wenn Sie auf OK klicken, wird das Formular FrmNewDataFile Sie zum Auswählen einer neuen Back-End-Datenbank wird geöffnet und anschließend aktualisiert Ihre Tabellenverknüpfungen. Wenn Sie auf Abbrechen klicken, wird sinngemäß die folgende Fehlermeldung:
    Die verknüpften Tabellen können Ihre Datenquelle nicht finden. Bitte melden Sie sich Netzwerk, und starten Sie das Programm neu.

Informationsquellen

Weitere Informationen zum Anpassen der im Beispiel für aktualisieren verknüpfte Tabellen in diesem Beispiel Developer Solutions Programm (Solutions9.mdb), klicken Sie auf die Artikelnummer unten klicken, um der Microsoft Knowledge Base:
154397ADT/ODE How to Modify Modul RefreshTableLinks in Solutions.mdb
Weitere Informationen der Paket- und Weitergabe-Assistent finden Sie in der Microsoft Knowledge Base:
240956MOD2000: Paket- und Weitergabe-Assistent jetzt zum Erstellen von einer verteilbare Anwendungs
236143MOD2000: How to Start der Paket- und Weitergabe-Assistent

Eigenschaften

Artikel-ID: 209862 - Geändert am: Donnerstag, 23. Juni 2005 - Version: 3.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Access 2000 Standard Edition
Keywords: 
kbmt kbprogramming kberrmsg kbhowto kbinfo KB209862 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 209862
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