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

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

Datensätze in mehreren Tabellen löschen

Sprache / Programm: Access ab Version 97
Beschreibung

Die Funktion löscht alle Datensätze in allen angegebenen Tabellen / Abfragen.

Bei 1:n Beziehungen ohne Löschweitergabe können in der Tabelle auf der 1-Seite der Beziehung nur die Datensätze gelöscht werden, die nicht in der Tabelle auf der n-Seite vorkommen. Um hier dennoch zu löschen, durchläuft das Programm eine Schleife, bei der möglichst viele Tabellen geleert werden, naturgemäß 'erwischt' es hier zuerst die Tabellen auf der n-Seite und im nächsten Durchlauf die auf der 1-Seite (bei komplizierteren Beziehungen sind mehr Durchläufe nötig)

VBA-Quelltext
Public Sub AlleDatensätzeLöschen(ParamArray ListeTabellen())
    Dim Tabelle, VolleTabellen As Integer, ZuLeerendeTabellen As Integer
    On Error Resume Next
    VolleTabellen = UBound(ListeTabellen) - LBound(ListeTabellen) + 1
    DoCmd.SetWarnings False
    Do
        ZuLeerendeTabellen = VolleTabellen
        VolleTabellen = 0
        For Each Tabelle In ListeTabellen
            DoCmd.RunSQL "DELETE * FROM [" & Tabelle & "]"
            If DCount("*", Tabelle) > 0 Then VolleTabellen = VolleTabellen + 1
        Next Tabelle
    Loop While ZuLeerendeTabellen > VolleTabellen
End Sub
Argumente der Funktion/Prozedur

ListeTabellen

Namen der Tabellen oder Abfragen, deren Datensätze gelöscht werden sollen
Verwendete Variable

Tabelle
Objektvariable
Rückgabewert

Anzahl der Tabellen / Abfragen, aus denen nicht alle Datensätze gelöscht werden konnten (0 = aus allen angegebenen Tabellen / Abfragen konnten alle Datensätze gelöscht werden)

Hinweis

Nach dem Ausführen sollte die Datenbank komprimiert werden, um den Speicherplatz zurückzugewinnen.

Anwendungsgebiete, Fehler und Warnungen

Das Programm löscht auch ausgeblendete Tabellen. Es ist möglich, dass nicht alle Tabellen geleert werden können, z.B. weil eine Tabelle auf der 1-Seite geleert werden soll, aber die der zugehörige Tabelle auf der n-Seite gar nicht an die Funktion zum Leeren übergeben wurde. Nicht vorhandene Tabellen / Abfragen oder nichtaktualisierbare Abfragen werden ignoriert.