[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Beziehungen in einer Datenbank löschen und schreiben

Sprache / Programm: Access ab Version 97
Beschreibung

Löscht alle Beziehungen in einer Datenbank und dokumentiert diese in einer Tabelle für eine Wiederherstellung mit der Prozedur 'BeziehungenErstellen'.

VBA-Quelltext
Public Sub BeziehungenLöschen(NameTabelle As String)
    Dim Beziehung As DAO.Relation, BeziehungsTabelle As DAO.Recordset
    Dim Nr As Integer, BeziehungsNr As Integer
   
''' Alle Beziehungen In einer Tabelle dokumentieren
    If NameTabelle <> vbNullString Then
       
        If RecordSetExistiert(NameTabelle) Then
            If MsgBox("Tabelle '" & NameTabelle & "' existiert bereits. Überschreiben ?", vbOKCancel, "Beziehungen löschen") = vbCancel Then Exit Sub
            DoCmd.DeleteObject acTable, NameTabelle
        End If
        ' Tabelle erstellen
        DoCmd.RunSQL "CREATE TABLE [" & NameTabelle & "] ([BeziehungsNr] Byte, [Name] TEXT, [Table] TEXT, [ForeignTable] TEXT, [Attributes] Long, [PartialReplica] BIT, [FieldName] TEXT, [ForeignFieldName] TEXT);"
        Set BeziehungsTabelle = CurrentDb.OpenRecordset(NameTabelle)
        BeziehungsNr = 0
       
        ' Einzelne Beziehungen untersuchen
        For Each Beziehung In CurrentDb.Relations
            BeziehungsNr = BeziehungsNr + 1
            ' Einzelne Felder In jeder Beziehung untersuchen
            For Nr = 0 To Beziehung.Fields.Count - 1
                With BeziehungsTabelle
                    .AddNew
                    ' Attribute der Beziehung
                    ![BeziehungsNr] = BeziehungsNr
                    ![Name] = Beziehung.Name
                    ![TABLE] = Beziehung.TABLE
                    ![ForeignTable] = Beziehung.ForeignTable
                    ![Attributes] = Beziehung.Attributes
                    ![PartialReplica] = Beziehung.PartialReplica
                    ![FieldName] = Beziehung.Fields(Nr).Name
                    ![ForeignFieldName] = Beziehung.Fields(Nr).ForeignName
                    .Update
                End With
            Next Nr
        Next Beziehung
        BeziehungsTabelle.Close
    End If
   
''' Alle Beziehungen löschen
    For Each Beziehung In CurrentDb.Relations
        CurrentDb.Relations.Delete Beziehung.Name
    Next Beziehung

End Sub
Argumente der Funktion/Prozedur

NameTabelle.

Text mit dem Namen einer Tabelle, in welcher die Informationen der Beziehung gespeichert werden.

Wird kein Argument übergeben, erstellt das Programm keine Tabelle und löscht einfach nur alle Beziehungen.

Hinweis

Um die Beziehungen wieder aus der Tabelle zu erstellen, kann die Funktion BeziehungenErstellen verwendet werden.

Anwendungsgebiete, Fehler und Warnungen

Verwendet die DAO Objektbibliothek. Ab Access 2000 muss diese explizit im VBA-Editor über 'Extras' -> 'Verweise' als 'Microsoft DAO 3.6' (oder höher) eingebunden werden und vor die 'Microsoft ADO 2.1' (oder höher) Bibliothek gesetzt werden.