Benutzung auf eigene Gefahr ! |
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 |
|
Verwendete Variable |
|
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. |