Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2009.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Wie funktioniert das neue Append-Only-Memofeld? Wofür ist es gut? Wie kann man die darin gespeicherten Änderungen visualisieren?

Techniken

Memofelder, VBA

Voraussetzungen

Access 2007

Beispieldateien

AppendOnly.accdb

Shortlink

664

Das Append-Only-Memofeld

Thomas Möller, Weinstadt

Mit Access 2007 hat Microsoft neben vielen anderen Neuerungen auch das Memofeld angepackt. So speichert dieses nun formatierte Texte und kann außerdem nach Wunsch alle Änderungen an den enthaltenen Texten protokollieren. Dieser Beitrag zeigt, wie Sie ein Append-Only-Memofeld einrichten, wie es funktioniert und wie Sie die gespeicherten Änderungen lesen können.

Protokollierung aktivieren

Um die Protokollierung der Änderungen am Text eines Memofelds einzurichten, setzen Sie dessen Eigenschaft Nur Anfügen auf den Wert Ja. Diese Eigenschaft steht Ihnen jedoch nur zur Verfügung, wenn die Datenbank im 2007er-Dateiformat (.accdb) vorliegt.

Der Name dieser Eigenschaft ist irreführend. Besser wäre es gewesen, wenn die Eigenschaft den Namen "Protokollierung aktivieren" erhalten hätte. Bei der Namensfindung haben sich die Entwickler von Access 2007 an SharePoint orientiert [1]. Dort gibt es die gleiche Funktion.

Um die Wirkung der Eigenschaft Nur Anfügen zu testen, legen Sie eine neue Tabelle in einer .accdb-Datei an, fügen zumindest ein Memofeld ein und ändern die Eigenschaft Nur anfügen auf Ja. Lassen Sie sich dabei nicht von Access ins Bockshorn jagen. Die genannte Eigenschaft finden Sie ganz am Ende der Liste der Eigenschaften. Access offenbart Ihnen diese Eigenschaft erst dann, wenn Sie die Bildlaufleiste der Eigenschaften nach unten verschieben (s. Abb. 1). Öffnen Sie jetzt die Tabelle in der Datenblattansicht und tragen Sie beliebigen Text in das Memofeld ein. Nachdem Sie den Datensatz gespeichert haben, ändern Sie den Wert des Memofeldes. Das Memofeld verhält sich wie ein normales Textfeld. Wenn Sie Daten ändern, werden diese gespeichert. Doch wo verbergen sich die gespeicherten Änderungen? Und wie kann man die Änderungen wieder sichtbar machen?

Abb1.tif

Abb. 1: Um die Eigenschaft Nur Anfügen sichtbar zu machen, müssen Sie an das Ende der Liste der Eigenschaften scrollen.

Historie sichtbar machen

Jedes Mal, wenn Sie den Inhalt eines Append-Only-Memofeldes ändern, speichert Access neben dem neuen Inhalt auch einen Zeitstempel. Diese Daten werden jeweils an den Inhalt des Memofeldes angehängt. Access zeigt aber immer nur den zuletzt gespeicherten Inhalt an.

Die gespeicherten Änderungen machen Sie auf einfache Art sichtbar. Dazu setzen Sie die Einfügemarke in das Memofeld und wählen aus dem Kontextmenü den Eintrag Spaltenverlauf anzeigen ... aus. Access öffnet daraufhin ein Fenster mit der Historie der Änderungen für dieses Feld (s. Abb. 2). Das Kontextmenü steht nicht nur in Tabellen, sondern auch in Formularen zur Verfügung.

Abb2.tif

Abb. 2: Sie können sich alle gespeicherten Änderungen für ein Memofeld anzeigen lassen.

Mit VBA auf die Änderungen zugreifen

Die gespeicherten Änderungen in einem Append-Only-Memofeld können Sie auch mit VBA auslesen, und zwar mit der neuen Methode ColumnHistory des Application-Objekts. Diese erwartet die folgenden Parameter und liefert einen String mit allen gespeicherten Änderungen:

  • Feldname
  • Tabellenname
  • Bedingung, die den Datensatz identifiziert

Leider liefert ColumnHistory keine aussagekräftigen Fehlermeldungen. Wenn sich in den Parametern ein Fehler eingeschlichen hat, erhalten Sie die Fehlermeldung mit dem Text Automatisierungsfehler und einer kryptischen Fehlernummer (s. Abb. 3). Ein Klick auf die Hilfe-Schaltfläche bringt Sie leider auch nicht weiter. Mit etwas Forschergeist finden Sie jedoch heraus, dass sich die Fehlernummern je nach Fehlerquelle unterscheiden. Fehlerhafte Tabellen- oder Feldnamen liefern Fehler mit unterschiedlichen Fehlernummern. Ein Fehler in der Bedingung löst wieder einen anderen Fehler aus.

Abb3.tif

Abb. 3: Die Fehlermeldung zur Funktion ColumnHistory ist leider wenig aussagekräftig.

Das machen wir uns zunutze und schreiben eine eigene globale Funktion mit dem Namen ColumnHistory, die abhängig von der Fehlernummer eine aussagekräftige Fehlerbeschreibung ausgibt. Wie kann eine Funktion mit demselben Namen wie eine in Access eingebaute Funktion funktionieren? Das ist schnell erklärt: Wenn VBA auf den Namen einer Funktion stößt, sucht es zuerst im eigenen Modul, dann in den anderen Modulen des VBA-Projekts, danach in den Verweisen in der Reihenfolge ihrer Priorität und zum Schluss wird in den eingebauten Verweisen (VBA und Access) gesucht. Details zu diesem Verhalten können Sie im Beitrag Defekte Verweise: Ursachen und Lösungen (Shortlink 572) nachlesen.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Access 2007: Bilder und Schaltflächen

Access-Optionen gestern und heute

Das Optionsgruppen-Steuerelement

Flexible Datumstextfelder

TreeView nach Bedarf füllen

TreeView-Elemente im Griff

Tipps und Tricks

Registersteuerelemente von A-Z

Access 2007: Anlagefelder

Auswahlfelder im Ribbon

TreeView-Konfigurator

Tipps und Tricks

Arrays, Collections und Dictionarys

Kontextmenüs von A bis Z

Steuerelemente zur Laufzeit verschieben

Listenfeld und Details in einem Formular

© 2003-2015 André Minhorst Alle Rechte vorbehalten.