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

änderungen protokollieren, Teil I

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

Textfelder sind das Hauptwerkzeug zur Eingabe von Daten. Sie können diese an die Felder der Datenherkunft eines Formulars binden oder diese ungebunden einsetzen. So intuitiv Textfelder zu benutzen sind, soviele Möglichkeiten und Fallstricke bieten sie auch. Dieser Artikel zeigt, was alles bei der Eingabe von Daten mit Textfeldern geschieht und wann welche Texte wo gespeichert werden.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1304_AenderungenProtokollieren.mdb.

Warum protokollieren

änderungen an Datensätzen sind in der Regel unumkehrbar, wenn der Datensatz einmal gespeichert ist. Solange dies noch nicht geschehen ist und Sie einfach nur die Werte eines oder mehrerer Felder aktualisiert haben, lässt sich dies noch rückgängig machen – beispielsweise durch Betätigen der Escape-Taste.

Anderenfalls können Sie nach einer Fehleingabe nur hoffen, dass Sie den vorherigen Zustand des Datensatzes wiederherstellen können – oder dass eine Sicherungskopie noch den gewünschten Stand enthält. Wenn Sie dem vorbeugen möchten, können Sie die änderungen an Datensätzen auch protokollieren. Dabei gibt es zwei Varianten:

  • Sie speichern die änderung eines jeden Feldes als eigenen Datensatz in einer Tabelle, welche den Namen der betroffenen Tabelle und des Feldes, den alten und den neuen Wert, den betroffenen Datensatz sowie das änderungsdatum und gegebenenfalls den ausführenden Benutzer speichert.
  • Sie legen für jede Tabelle, für die Sie änderungen protokollieren möchten, eine Kopie an. Vor einer änderung übertragen Sie den vorherigen Zustand in diese Tabelle – auch hier wieder mit dem Datum der änderung und dem Namen der ausführenden Person.

In diesem Artikel schauen wir uns beide Varianten an.

Formularereignisse als Ausgangspunkt

Während es etwa unter dem SQL Server Trigger gibt, denen Sie Code zum Protokollieren von änderungen zuweisen können, müssen Sie in reinen Access-Datenbanken (also solchen, die ihre Daten wiederum in einer Access-Datenbank speichern – egal, ob in einer einzigen Datei oder aufgeteilt in Frontend und Backend) entsprechende Ereignisprozeduren zu den Formularen hinzufügen, in welchen die änderungen durchgeführt werden.

In den meisten Fällen werden Sie die änderungen beim Speichern des Datensatzes protokollieren. Der richtige Zeitpunkt ist das Ereignis Vor Aktualisierung des Formulars. Es wird unmittelbar vor dem Speichern ausgelöst – und vor dem Ereignis Nach Aktualisierung.

Der Vorteil des Ereignisses Vor Aktualisierung ist: Sie können zu diesem Zeitpunkt sowohl auf den vorherigen als auch auf den aktuellen Wert eines Feldes der Datenherkunft zugreifen – und zwar über die Eigenschaften OldValue und Value (weitere Informationen hierzu finden Sie im Artikel Textfelder: Value, OldValue und Text.

Was soll protokolliert werden

Die Protokollierung soll so erfolgen, dass alle zur Kontrolle und sogar zur Wiederherstellung der geänderten Daten notwendigen Informationen gespeichert weden. Dazu legen Sie eine Tabelle namens tblAenderungen an, die im Entwurf wie in Bild 1 aussieht.

Die Tabelle tblAenderungen in der Entwurfsansicht

Bild 1: Die Tabelle tblAenderungen in der Entwurfsansicht

Dabei kommen die folgenden Felder zum Einsatz:

  • AenderungID: Primärschlüsselfeld der Tabelle
  • Tabelle: Name der Tabelle, deren Datensatz geändert wurde
  • Aktion: Wir wollen nicht nur änderungen, sondern auch das Anlegen oder Löschen von Datensätzen dokumentieren. Dieses Feld soll die Werte New, Edit und Delete aufnehmen.
  • Feld: Name des geänderten Feldes
  • PKName: Name des Primärschlüsselfeldes der betroffenen Tabelle
  • PKWert: Wert des Primärschlüsselfeldes des geänderten Datenatzes
  • Zeit: Datum und Uhrzeit der änderung
  • Benutzer: Aktueller Benutzer zum Zeitpunkt der änderung
  • AlterWert: Wert des Feldes vor der änderung
  • NeuerWert: Wert des Feldes nach der änderung

Diese Art der Protokollierung erzeugt natürlich eine Menge Daten: Es wird tatsächlich zu jedem geänderten Feld ein eigener Datensatz in der Tabelle tblAenderungen angelegt.

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