Home > Artikel > Ausgabe 3/2014 > Datenmakros I: Grundlagen

Datenmakros I: Grundlagen

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Eine der interessantesten Neuerungen mit Access 2010 sind die Datenmakros. Damit können Sie sowohl endlich auch die üblichen Bearbeitungen und Zugriffe auf Tabellen durchführen (mit benannten Makros) als auch eine Art Ereignisse für Tabellen definieren, die beim Anlegen, Ändern oder Löschen von Daten in Tabellen ausgelöst werden (Datenmakros). Dieser Artikel zeigt, wie Sie Datenmakros und benaanlegen und was es dabei zu beachten gibt.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1403_Daten­makros.mdb.

Einführung

Datenmakros kommen gleich in zwei Ausführungen: Die erste entspricht etwa den Triggern anderer Datenbanksysteme. Trigger werden durch Änderungen an den Datensätzen einer Datenbank ausgelöst. Die zweite kann einfache Datenoperationen abbilden, wie Sie sie auch per VBA mit den Elementen der DAO-Bibliothek programmieren können – also etwa das Hinzufügen, Ändern oder Löschen eines Datensatzes, aber auch das Auslesen von Feldinhalten eines zuvor ermittelten Datensatzes.

Ereignisse in Tabellen

Die folgenden Ereignisse in Zusammenhang mit der Änderung von Datensätzen in Tabellen können Datenmakros auslösen (sofern diese definiert sind):

  • Nach dem Anlegen eines Datensatzes
  • Vor dem Ändern eines oder mehrerer Felder eines Datensatzes
  • Nach dem Ändern eines Datensatzes
  • Vor dem Löschen eines Datensatzes
  • Nach dem Löschen eines Datensatzes

Das Schöne an Datenmakros ist, dass diese immer ausgelöst werden, wenn die entsprechende Änderung erfolgt – egal, wodurch die Änderung geschieht.

Es gibt beispielsweise die folgenden Möglichkeiten, eine entsprechende Änderung zu bewirken und dadurch ein Datenmakro auszulösen:

  • Änderungen direkt in der Datenblattansicht der Tabelle
  • Änderungen über die Datenblattansicht einer Abfrage
  • Änderungen über die Eingabe in ein Formular
  • Änderungen per DAO oder ADO
  • Änderungen durch die direkte Ausführung einer Aktionsabfrage über den Navigationsbereich (INSERT INTO, UPDATE, DELETE, SELECT INTO)
  • Änderung durch eine Aktionsabfrage, die per DoCmd.RunSQL oser per .Execute ausgelöst wurde

Der Artikel Datenmakros III: Ereignisse liefert einige Beispiele für den Einsatz von Ereignissen in Tabellen.

Benannte Makros

Die benannten Makros legen Sie immer in Zusammenhang mit einer Tabelle an. Diese müssen sich aber nicht auf die aktuelle Tabelle beziehen, sondern Sie können damit auch die Daten anderer Tabellen bearbeiten oder einlesen. Benannte Makros können Sie entweder von Datenmakros aus auslösen oder auch mit der Makroaktion AusführenDatenmakro von einem herkömmlichen Makro aus.

Auch die Ausführung per VBA ist möglich. Dazu rufen Sie einfach die Methode RunDataMacro des DoCmd-Objekts auf – beispielsweise wie folgt:

DoCmd.RunDataMacro "macDatenmakro"

Später erfahren Sie noch ein weiteres Detail hierzu – nämlich zur Übergabe von Parametern.

Datenmakros anlegen

Datenmakros werden nicht wie herkömmliche Datenmakros über den Ribbon-Eintrag Erstellen|Makros und Code|Makros erstellt, sondern im Kontext der jeweiligen Tabelle. Dazu wählen Sie in der Entwurfsansicht den Ribbon-Eintrag Entwurf|Feld-, Da­ten­satz- und Ta­bel­len­er­eig­nis­se|Da­ten­makros erstellen und öffnen so eine Liste der verfügbaren Datenmakros sowie die Möglichkeit, ein benanntes Makro zu erstellen (siehe Bild 1).

Datenmakros über den Tabellenentwurf erstellen

Bild 1: Datenmakros über den Tabellenentwurf erstellen

Später werden Sie an dieser Stelle die Möglichkeit erhalten, bereits erstellte Datenmakros und benannte Makros zu bearbeiten.

Mit den neueren Access-Versionen (ab Version 2007) können Sie Tabellen auch in der Datenblattansicht bearbeiten. Das gilt auch für das Anlegen und Bearbeiten von Datenmakros und benannten Makros. Wenn Sie die Ansicht der Tabelle zur Datenblattansicht wechseln, finden Sie im Ribbon unter dem Tab Tabelle alle notwendigen Befehle direkt in der Übersicht vor (siehe Bild 2).

Datenmakros und benannte Makros direkt zur Datenblattansicht hinzfuügen

Bild 2: Datenmakros und benannte Makros direkt zur Datenblattansicht hinzfuügen

Hier werden die Makros sogar noch in zwei Ribbon-Gruppen unterteilt, nämlich in Vorabereignisse (Vor Änderung und Vor Löschung) und Nachfolgeereignisse (Nach Einfügung, Nach Aktualisierung und Nach Löschung).

Einfache Protokollierung

Wählen Sie hier den Eintrag Nach Einfügung, zeigt Access ein neues, leeres Makro an, das nach dem Einfügen eines neuen Datensatzes ausgeführt wird. In diesem Fall wollen wir noch keine Änderung am Feld AngelegtAm vornehmen, sondern ein sehr schönes Feature der Datenmakros nutzen: Es gibt nämlich eine Tabelle namens USysApplicationLog, mit der Sie Informationen aus Makros heraus speichern können, und zwar auf einfachste Weise.

Dazu klicken Sie in der Datenblattansicht auf den Ribbon-Eintrag Tabelle|Nachfolgeereignisse|Nach Einfügung. Es erscheint ein neues, leeres Makro, dem Sie den Befehl ProtokollierenEreignis hinzufügen. Dieses erwartet als Parameter lediglich den Text des zu protokollierenden Ereignisses, in diesem Fall den folgenden (siehe Bild 3):

Tabellen-Ereignisse per Makro protokollieren

Bild 3: Tabellen-Ereignisse per Makro protokollieren

="Datensatz mit der ID '" & [tblBeispieleFuerProtokollierung].[BeispielID] & "' in der Tabelle 'tblBeispieleFuerProtokollierung' angelegt. Zeit: " & Jetzt()

Darin stecken gleich mehrere Informationen, nämlich der Primärschlüsselwert des neu hinzugefügten Datensatzes und die aktuelle Zeit mit Datum (Jetzt()).

Wenn Sie das Makro speichern und schließen, können Sie es gleich ausprobieren. Dazu müssen Sie lediglich einen neuen Datensatz zur Tabelle hinzufügen. Aber was geschieht nun? Zunächst einmal nichts Sichtbares.

Erst wenn Sie zufällig zum Backstage-Bereich von Access 2010 und neuer wechseln, finden Sie einen passenden Hinweis: Über den üblichen Schaltflächen etwa zum Komprimieren und Reparieren der aktuellen Datenbank finden Sie dort nämlich jetzt eine Schaltfläche mit der Beschriftung Anwendungsprotokolltabelle anzeigen (siehe Bild 4).

Der Backstage-Bereich liefert einen Hinweis auf die Anwendungsprotokolltabelle

Bild 4: Der Backstage-Bereich liefert einen Hinweis auf die Anwendungsprotokolltabelle

Klicken Sie diese Schaltfläche an, erscheint die Tabelle USysApplicationLog (siehe Bild 5). Diese enthält einige wichtige Informationen:

Die Tabelle USysApplicationLog

Bild 5: Die Tabelle USysApplicationLog

  • SourceObject: Objekt, das den Eintrag verursacht hat – in diesem Fall das AfterInsert-Makro der Tabelle tblBeispieleFuerProtokollierung
  • Data Macro Instance ID: Eindeutiger Identifizierer der Makro-Instanz
  • Error Number: Fehlernummer
  • Category: Kategorie des Fehlers, hier User (also benutzerdefiniert)
  • Object Type: Typ des auslösenden Objekts, hier Macro
  • Description: Beschreibung (in diesem Fall benutzerdefiniert entsprechend dem Wert des Parameters Beschreibung der Makroaktion ProtokollierenEreignis)
  • Context: Kontext des Fehlers, in diesem Fall leer
  • Created: Zeitpunkt der Erstellung des Datensatzes. Die Angabe des Datums in der Beschreibung hätten wir uns somit sparen können.

Die Tabelle USysApplicationLog dient auch der Aufzeichnung von Fehlern, die in Daten­makros ausgelöst werden (Fehler in herkömmlichen Makros führen ja zu entsprechenden Meldungen, wenn diese nicht anderweitig behandelt werden, Datenmakros lösen keine offensichtlichen Fehlermeldungen aus).

Datenmakros verwalten

Auch wenn wir bislang noch keine Datenmakros und benannte Makros angelegt haben, wollen wir uns bereits ansehen, wie Sie die vorhandenen, in Zusammenhang mit einer Tabelle erstellten Makros verwalten können.

Dazu klicken Sie im Ribbon auf die Schaltfläche Tabelle|Benannte Makros|Benannte Makros und wählen dort den Eintrag Makro umbenennen/löschen aus (siehe Bild 6).

Aufruf der Benutzeroberfläche zur Verwaltung von Makros

Bild 6: Aufruf der Benutzeroberfläche zur Verwaltung von Makros

Dies öffnet wiederum den Dialog Datenmakro-Manager aus Bild 7.

Verwalten von Makros (in diesem Fall zunächst eines Makros)

Bild 7: Verwalten von Makros (in diesem Fall zunächst eines Makros)

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!