window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Datenmakros III: Ereignisse

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Mit der Einführung von Datenmakros mit in Access 2010 bietet sich nun auch für Access-Benutzer die Möglichkeit, über eine Art Trigger Aktionen auszuführen, die in Zusammenhang mit dem Anlegen, ändern oder Löschen von Datensätzen stehen. Dieser Artikel stellt die verschiedenen Ereignisse vor und zeigt, wie Sie diese programmieren.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1406_Makros.accdb.

Datenereignisse

Access bietet seit Access 2010 die folgenden Tabellenereignisse an:

  • Vor änderung
  • Vor Löschung
  • Nach Einfügung
  • Nach Aktualisierung
  • Nach Löschung

Wir schauen uns in den folgenden Abschnitten einfache Beispiele für diese Ereignisse an und zeigen Ihnen, welche Besonderheiten diese jeweils aufweisen. Die Ereignisse können Sie auf zwei verschiedenen Wegen festlegen:

  • über die Ribbon-Einträge unter Tabelle|Vorabereignisse und Tabelle|Nachfolgeereignisse der Datenblattansicht der Tabelle (siehe Bild 2) und
  • Schaltflächen zum Hinzufügen von Tabellenereignissen in der Datenblattansicht

    Bild 1: Schaltflächen zum Hinzufügen von Tabellenereignissen in der Datenblattansicht

  • über die Ribbon-Einträge unter Entwurf|Feld-, Datensatz- und Ta-bel-len-er-eig-nisse|Da-ten-makros er-stellen der Entwurfsansicht einer Tabelle (siehe Bild 3).
  • Schaltflächen zum Hinzufügen von Tabellenereignissen in der Entwurfsansicht

    Bild 2: Schaltflächen zum Hinzufügen von Tabellenereignissen in der Entwurfsansicht

Die Beispieldatenbank enthält eine einfache Tabelle namens tblKunden, die wie in Bild 1 aussieht. An dieser Tabelle demonstrieren wir die nachfolgenden Beispiele.

Tabelle zum Darstellen der Möglichkeiten von Tabellenereignissen

Bild 3: Tabelle zum Darstellen der Möglichkeiten von Tabellenereignissen

Mögliche Makrobefehle

Je nachdem, welches Datenmakro Sie verwenden, stehen Ihnen unterschiedliche Makrobefehle zur Verfügung.

Einen sehr eingeschränkten Vorrat an Makrobefehlen finden Sie für die beiden Datenmakros Vor änderung und Vor Löschung vor:

  • Gruppieren: Fasst mehrere Befehle zu einer Gruppe zusammen.
  • Kommentar: Erlaubt die Eingabe eines Kommentars.
  • Wenn: Bedingungsblock
  • AuslösenFehler: Löst einen Fehler aus, der allerdings nur in der Protokolltabelle landet.
  • BeiFehler: Aktiviert die Fehlerbehandlung.
  • FestlegenFeld (nur in Vor änderung, nicht in Vor Löschung): Legt den Wert eines Feldes der aktuellen Tabelle fest, die das Datenmakro ausgelöst hat. In den übrigen Tabellenereignissen nur über DatensatzBearbeiten und DatensatzErstellen verfügbar.
  • FestlegenLokaleVar: Legt eine lokale Variable fest.
  • LöschenMakroFehler: Setzt das MakroError-Objekt zurück.
  • NachschlagenDatensatz: Wie DLookup.
  • StoppMakro: Beendet das Makro.

Für die drei Datenmakros Nach Einfügung, Nach Aktualisierung und Nach Löschung stehen noch einige weitere Makrobefehle zur Verfügung:

  • AusführenDatenmakro: Ruft ein weiteres Datenmakro auf.
  • BeendenFürJedenDatensatz: Beendet eine FürJedenDatensatz-Schleife.
  • DatensatzBearbeiten: Bearbeitet einen Datensatz. Darin Zuweisung der Werte mit FestlegenFeld.
  • DatensatzErstellen: Erstellt einen neuen Datensatz. Darin Zuweisung der Werte mit FestlegenFeld.
  • DatensatzLöschen: Löscht einen Datensatz.
  • FürJedenDatensatz: Wie Do While Not rst.EOF-Schleife.
  • ProtokollierenEreignis: Trägt ein Ereignis in die Tabelle USysApplicationLog ein.
  • SendenEMail: Sendet eine E-Mail.
  • StoppAlleMakros: Beendet alle Makros, auch diejenigen, die das aktuelle Makro aufgerufen haben.

In den drei Makros Nach Einfügung, Nach Aktualisierung und Nach Löschung gibt es keinen direkten Zugriff auf den Makrobefehl FestlegenFeld.

Kein Wunder: Dieser steht im Datenmakro Vor änderung auch nur bereit, weil er sich auf die Felder der aktuellen Tabelle bezieht.

Aus einem anderen Grund fehlt der Befehl im Datenmakro Vor Löschung komplett: Es würde ja keinen Sinn machen, einen Feldwert vor dem Löschen noch zu ändern.

Spezielle Tabellen, Felder und Funktionen

Wenn Sie Werte in die Eigenschaften der Makroaktionen eintragen wollen und den ersten Buchstaben eintippen, erhalten Sie gleich per IntelliSense alle möglichen Vorschläge.

Noch besser gelingt dies, wenn Sie innerhalb eines Eigenschaftsfeldes die Tastenkombination Strg + Leertaste betätigen. Der Makroeditor zeigt dann direkt alle zur Verfügung stehenden Elemente an (siehe Bild 4).

Auswahl der Elemente per IntelliSense

Bild 4: Auswahl der Elemente per IntelliSense

Nachfolgend finden Sie eine Auflistung spezieller Elemente inklusive der Tabellenereignisse, welche diese zur Verfügung stellen:

  • Aktualisiert (Vor änderung, Nach Einfügung, Nach Aktualisierung, Vor Löschung, Nach Löschung): Gibt an, ob der Wert des als Parameter angegebenen Feldes geändert wurde. Das dieser auch in den beiden Ereignissen Vor Löschung und Nach Löschung angeboten wird, ist nicht wirklich sinnvoll – was spielt es für eine Rolle, ob ein zu löschender Datensatz zuvor geändert wurde
  • Alt (Vor änderung, Vor Löschung, Nach Einfügung, Nach Aktualisierung, Nach Löschung): Ermöglicht den Zugriff auf den Datensatz vor der änderung. Dabei verwenden Sie statt des Tabellennamens einfach den Namen Alt, zum Beispiel Alt!KundeID.
  • IstEingefügt (Vor änderung): Prüft, ob der geänderte Datensatz soeben geändert oder eingefügt wurde.
  • LetztesErstellenDatensatzID (Nach Einfügung, Nach Aktualisierung, Nach Löschung): Damit können Sie, wenn Sie von einem Makro aus einen Datensatz anlegen, gleich den Primärschlüsselwert dieses Datensatzes ermitteln (sofern es sich um einen Autowert handelt).
  • MakroErneutGestartet (Nach Einfügung, Nach Aktualisierung, Nach Löschung): Liefert eine Information, ob das Makro durch das gleiche Makro neu gestartet wurde. Wenn Sie beispielsweise in einem Nach Aktualisierung-Makro wieder ein Feld des gleichen Datensatzes aktualisieren, löst dies wieder das gleiche Datenmakro aus. Wenn dies nicht geschehen soll, können Sie dies durch das Makro abfangen.
  • MakroError (Vor änderung, Vor Löschung, Nach Einfügung, Nach Aktualisierung, Nach Löschung): Liefert Informationen über den zuletzt aufgetretenen Fehler.
  • Rückgabevariablen (Nach Einfügung, Nach Aktualisierung, Nach Löschung): Wenn Sie ein weiteres Datenmakro aufrufen und dieses Rückgabevariablen liefert, können Sie diese über dieses Objekt auslesen.

Anwendung der fünf Tabellenereignisse

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar