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:
- Öffnen Sie die Tabelle tblKunde in der Datenblattansicht.
-
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: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.
- 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.
-
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:
- Geben Sie im Kombinationsfeld Datensatz erstellen in den Tabellennamen tblLog ein.
- Klicken Sie im Datenblock Neue Aktion hinzufügen den Eintrag FestlegenFeld aus.
-
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: - Verfahren Sie mit den Feldern LogKdName und LogKdOrt analog, indem Sie jeweils neue Aktionen im Datenblock FestlegenFeld hinzufügen.
- 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. -
Geben Sie im Feld Name den Ausdruck tblLog.LogZeit ein und im Feld Wert den Ausdruck
JETZT() ein. Das Datenmakro sieht folgendermaßen aus: -
Speichern Sie das Makro und schließen Sie den Makro-Editor. Die Schaltfläche Nach Löschung
ist nun aktiviert.
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:
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.
War ein super Beitrag vielen Dank!