Tipp 4.7 - Alle Daten löschen

Wie kann ich alle Tabellendaten auf einmal löschen?

Mit dieser Funktion können Sie alle Tabellendaten auf einmal löschen. Diese Routine benötigt die Funktion A2XIsSysObject. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Beispiel:

Public Function A2XEmptyAllTbls(pdbs As DAO.Database) _
       As Boolean
  '// =====================================================
  '// Methode   | Löscht alle Daten aus den Tabellen
  '// -----------------------------------------------------
  '// Hinweis   | Berücksichtigen Sie, dass die Regeln
  '               der referentieller Integrität einge-
  '               halten werden. Ggf. müssen Sie die
  '               Routine ein weiteres Mal aufrufen
  '               oder zuvor die Beziehungen löschen!
  '// -----------------------------------------------------
  '// Parameter | pdbs - Datenbankobjekt
  '// -----------------------------------------------------
  '// Rückgabe  | Boolean - True erfolgreich/False Problem
  '// -----------------------------------------------------
  '// Erstellt  | Manuela Kulpa
  '//           | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  '// Beispielaufruf:
  '// ?A2XEmptyAllTbls(CurrentDb)
  '// =====================================================
 
  Dim tdf As DAO.TableDef
  Dim sSQL As String
 
  On Error GoTo A2XEmptyAllTbls_Error
 
  If MsgBox("Sind Sie wirklich sicher, dass Sie alle Daten " & _
            "aus Ihren Tabellen löschen möchten? ", _
            vbQuestion + vbYesNo) = vbYes Then
 
    ' Schleife über alle Tabellen
    For Each tdf In pdbs.TableDefs
      ' Überprüfung auf Systemobject
      ' Achtung benötigt die Funktion: A2XIsSysObject
      If A2XIsSysObject(CurrentData.AllTables(tdf.Name)) _
         = False Then
        ' Löschabfrage zusammenbasteln
        sSQL = "DELETE * FROM [" & tdf.Name & "]"
        ' Löschabfrage ausführen
        pdbs.Execute sSQL
      End If
    Next tdf
  End If
 
  A2XEmptyAllTbls = True
 
A2XEmptyAllTbls_Exit:
  On Error GoTo 0
  If Not tdf Is Nothing Then Set tdf = Nothing
  Exit Function
 
A2XEmptyAllTbls_Error:
  A2XEmptyAllTbls = False
  Select Case Err.Number
    Case Else
      MsgBox "Fehler " & Err.Number & ": " & _
             Err.Description, vbCritical, _
             "modData.A2XEmptyAllTbls"
  End Select
  Resume A2XEmptyAllTbls_Exit
 
End Function