Löschen von Datensätzen in Access protokollieren

In Access-Datenbanken ist es oft wünschenswert, das Löschen von Datensätzen aus bestimmten Tabellen zu protokollieren, unabhängig davon, an welcher Stelle in der Datenbank oder über welche Aktion diese Löschung erfolgt. Sie können in Access 2010 oder Access 2013 Datenmakros einsetzen, um eine automatische Protokollierung gelöschter Datensätze durchzuführen.

Beispiel

Wenn ein Datensatz aus der Kundentabelle gelöscht wird, soll automatisch ein Datensatz in der Protokolltabelle hinzugefügt werden, der anzeigt, welcher Kunde wann gelöscht worden ist.

Die Kundentabelle weist u. a. folgende Felder auf:

Feldname Typ Länge
KdNr Long Integer
KdName Text 80
KdOrt Text 40

Die Tabelle mit den Protokolldaten heißt tblLog und hat folgenden Aufbau:

Feldname Typ Länge
LogID AutoWert
LogKdNr Long Integer
LogKdName Text 80
LogKdOrt Text 40
LogZeit Datum/Uhrzeit

Die mit Access 2010 neu eingeführten Datenmakros haben den Vorteil, dass sie beim Eintreten von
bestimmten Tabellenereignissen wie Hinzufügen, Ändern oder Löschen von Datensätzen bestimmte Aktionen
ausführen können. Die Datenmakros werden immer gestartet, unabhängig davon, ob das Tabellenereignis
in der Datenblattansicht einer Tabelle, einer aktualisierbaren Abfrage, in einem Formular oder durch
VBA-Befehle ausgelöst wird.

Um ein Datenmakro anzulegen, das beim Löschen eines Datensatzes aus der Tabelle tblKunde gestartet wird, gehen Sie bitte folgendermaßen vor:

  1. Öffnen Sie die Tabelle tblKunde in der Datenblattansicht.
  2. Klicken Sie im Menü Tabellentools auf der Registerkarte Tabelle in der Gruppe Nachfolgeereignisse
    auf die Schaltfläche Nach Löschung. Der Makro-Editor wird gestartet:

    Access-Datenmakro Aktionskatalog

    Auf der rechten Seite des Makro-Editors wird Ihnen ein Aktionskatalog angezeigt, der alle Befehle enthält, die Sie für das zu erstellende Datenmakro einsetzen können.

  3. Fügen Sie einen Kommentar ein, indem Sie die Aktion Kommentar in das Makro-Fenster ziehen und einen Kommentartext eingeben. Der Kommentartext wird grün und in kursiver Schrift angezeigt.
  4. Klicken Sie auf den Pfeil im Kombinationsfeld Neue Aktion hinzufügen und wählen Sie den Eintrag DatensatzErstellen. Es wird ein neuer Datenblock eingefügt:

    Access-Datenmakro Datensatz erstellen

  5. Geben Sie im Kombinationsfeld Datensatz erstellen in den Tabellennamen tblLog ein.
  6. Klicken Sie im Datenblock Neue Aktion hinzufügen den Eintrag FestlegenFeld aus.
  7. Geben Sie im Feld Name den Ausdruck tblLog.LogKdNr und im Feld Wert den Ausdruck [Alt].[KdNr] ein.
    Hiermit legen Sie fest, dass die alte Kundennummer aus dem bereits gelöschten Datensatz der Tabelle tblKunde in das Feld LogKdNr
    der Tabelle tblLog übertragen wird. Beim Eingeben des Ausdrucks werden Sie durch
    Intellisense-Funktionen unterstützt. Das Datenmakro sieht bis jetzt folgendermaßen aus:

    Access-Datenmakro Festlegen Feld

  8. Verfahren Sie mit den Feldern LogKdName und LogKdOrt analog, indem Sie jeweils neue Aktionen im Datenblock FestlegenFeld hinzufügen.
  9. Zum Schluss soll noch der Zeitpunkt gespeichert werden, wann der Datensatz gelöscht wurde. Klicken Sie
    im Datenblock Neue Aktion hinzufügen nochmals den Eintrag FestlegenFeld auf.
  10. Geben Sie im Feld Name den Ausdruck tblLog.LogZeit ein und im Feld Wert den Ausdruck
    JETZT() ein. Das Datenmakro sieht folgendermaßen aus:

    Access-Datenmakro Logdatei

  11. Speichern Sie das Makro und schließen Sie den Makro-Editor. Die Schaltfläche Nach Löschung
    ist nun aktiviert.

    Access-Datenmakro Nach Löschung

Um das Datenmakro zu testen, wird aus der Tabelle tblKunde der letzte Datensatz mit der Kundennummer 147 gelöscht.

Nach dem Löschen des Kunden finden Sie in der Tabelle tblLog einen neuen Datensatz:

Access-Datenmakro Logdatei

Hinweise

  • Wenn Sie den Namen des Benutzers, der den Datensatz gelöscht hat, ebenfalls speichern möchten,
    können Sie den Namen einer Funktion eingeben, die den Benutzernamen ermittelt. Diese Funktion
    können Sie per VBA in einem Modul definieren. Die integrierte Access-Funktion CurrentUser() kann
    zwar verwendet werden, sie gibt immer nur den Namen Admin zurück. Alternativ kann der Ausdruck
    ENVIRON(„Username“) nicht verwendet werden, weil die Funktion ENVIRON in Datenmakros an dieser
    Stelle nicht zulässig ist.
  • Wenn Sie die Datenbank in Access 2007 öffnen, können Tabellen mit Datenmakros nur gelesen werden.
    Änderungen an den Datensätzen können nicht vorgenommen werden.
  • Etwaige Fehler beim Ausführen der Datenmakros werden in der Systemtabelle USysApplicationLog angezeigt.
    Sie können sich den Inhalt dieser Tabelle anzeigen lassen, indem Sie in der Backstageansicht
    (Registerkarte Datei) auf die Schaltfläche Informationen und dann auf die
    Schaltfläche Anwendungsprotolltabelle anzeigen klicken.
Michael Richter

Michael Richter

Autor

Ich unterstütze unsere Kunden in erster Linie durch Programmierung von Datenbankanwendungen und Zusatzmodulen von Microsoft Office. In Seminaren und Tipps auf unserer Blogseite gebe ich mein Wissen weiter.

1 Kommentar

  1. War ein super Beitrag vielen Dank!

Pin It on Pinterest

Share This