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:

FeldnameTypLänge
KdNrLong Integer
KdNameText80
KdOrtText40

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

FeldnameTypLänge
LogIDAutoWert
LogKdNrLong Integer
LogKdNameText80
LogKdOrtText40
LogZeitDatum/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.

Seminartipp

Die Erstellung von Datenmakros ist ein Thema unseres Access-Aufbaukurses.

Hat Ihnen dieser Beitrag weitergeholfen?

ja nein Andere Erwartung

Geben Sie uns Ihr Feedback. Möchten Sie eine Antwort von uns erhalten, tragen Sie zusammen mit Ihrem Feedback auch Ihre E-Mail-Adresse ein. Ihre E-Mail-Adresse wird ausschließlich für die Kommunikation mit Ihnen verwendet. Sie wird nicht veröffentlicht oder weitergegeben.

Benötigen Sie professionelle Unterstützung beim Einsatz von Word, Excel, Outlook, PowerPoint oder Access, so sind wir der richtige Ansprechpartner für Sie. Senden Sie uns eine E-Mail mit einer kurzen Problembeschreibung. Jemand aus unserem Team wird sich bei Ihnen melden, um weitere Details abzuklären und Ihnen ein Angebot für unsere Dienstleistung zu erstellen.