28.06.2013 Aufrufe

AP-Änderungsprotokoll-Manager Pro - Access-Paradies

AP-Änderungsprotokoll-Manager Pro - Access-Paradies

AP-Änderungsprotokoll-Manager Pro - Access-Paradies

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong> <strong>Pro</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

—————————————————————————————————————————<br />

Den <strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong> in eigene <strong>Access</strong>-Anwendungen eingebaut,<br />

protokolliert das Modul alle Neuanlagen, Änderungen und Löschungen an den<br />

Datensätzen. Das Modul ist ereignisgesteuert und kann dadurch direkt in die<br />

Anwendungsformulare eingefügt werden.<br />

In dieser Anleitung erklären wir Schritt für Schritt, wie das Modul in eine eigene<br />

Anwendung eingebaut wird. Der Einbau ist sehr einfach. Es müssen nur einige<br />

Tabellen, Formulare und Module importiert und ein paar Codezeilen in vorhandene<br />

Formulare eingefügt werden. Jedes Formular, in welchem die <strong>Pro</strong>tokollierung aktiv<br />

sein soll, benötigt einige Funktionen, die als ganzer Block in den VBA-Bereich des<br />

Formulars kopiert werden können. Wichtig für die <strong>Pro</strong>tokollierung ist, dass es bei der<br />

zugrunde liegenden Datenherkunft (Tabelle oder Abfrage) einen eindeutigen<br />

Schlüssel (Autowert, Primary Key) gibt. Dieser wird dafür verwendet, dass die<br />

protokollierten Daten dem Datensatz wieder zugeordnet werden können. Beim <strong>AP</strong>-<br />

<strong>Änderungsprotokoll</strong>-<strong>Manager</strong> PRO können auch Daten in Unterformularen der ersten<br />

Ebene protokolliert werden. Wird ein Datensatz des Hauptformulars gelöscht, werden<br />

dabei auch alle Daten der angehängten Datensätze der Unterformulare historisiert.<br />

Bei diesen Unterdatensätzen ist ebenfalls ein eindeutiger Schlüssel (Autowert,<br />

Primary Key) notwendig.<br />

Für den Einbau des <strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong>s sind vorhandene Kenntnisse<br />

in der <strong>Access</strong>-VBA-<strong>Pro</strong>grammierung von Vorteil, jedoch nicht zwingend erforderlich.<br />

Lesen Sie sich diese Anleitung bitte genau durch und folgen Sie den Anweisungen<br />

bitte auch im Detail. Selbst für einen <strong>Access</strong>-Anwender oder <strong>Access</strong>-Power-User<br />

dürfte der Einbau zu schaffen sein. Sollten Sie keine Erfahrung mit <strong>Access</strong> haben<br />

und auch mit unserer Anleitung nicht zurecht kommen, bieten wir einen<br />

Integrationsservice an. Bitte kontaktieren Sie uns in diesem Fall per Mail und wir<br />

erstellen Ihnen nach Absprache der Details ein attraktives Angebot.<br />

Infos zum Integrationsservice:<br />

Mail bitte an: webmaster@access-paradies.de<br />

Betreff: Integrationsservice für den <strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

Mailinhalt:<br />

Beschreiben Sie bitte, in welche Art von Anwendung das Modul eingebaut werden<br />

soll, welche <strong>Access</strong>-Version Sie verwenden und wie groß die Datenbank im gezipten<br />

Zustand ist. Teilen Sie uns bitte mit, welche Möglichkeiten Sie haben, um uns die<br />

Datenbank zukommen zu lassen (Mail, Download vom Internet, CD usw.)<br />

Sie können uns Ihre Anfrage auch faxen oder per Post zusenden.<br />

Fax: (08 21) 2 99 10 72<br />

Microsys Kramer<br />

Günther Kramer<br />

Ludwig-Thoma-Str. 7<br />

D-86368 Gersthofen<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Verweise:<br />

Bevor Sie das Modul in Ihre Anwendung integrieren können, müssen bestimmte<br />

Verweise verfügbar sein. Prüfen Sie deshalb zunächst die verfügbaren Referenzen in<br />

Ihrer Anwendung.<br />

Wie prüft man die vorhandenen Verweise?<br />

Öffnen Sie Ihre Anwendung. Im Datenbankfenster klicken Sie auf den Karteireiter<br />

Module. Öffnen Sie im Entwurf ein vorhandenes Modul oder erstellen Sie ein neues<br />

Modul. Über das Menü Extras / Verweise öffnen Sie den Verweisdialog.<br />

Folgende Verweise müssen aktiviert sein:<br />

Für <strong>Access</strong> 97:<br />

- Visual Basic For Applications<br />

- Microsoft <strong>Access</strong> 8.0 Object Library oder<br />

- Microsoft DAO 3.51 Object Library (oder höher)<br />

Für <strong>Access</strong> 2000:<br />

- Visual Basic For Applications<br />

- Microsoft <strong>Access</strong> 9.0 Object Library (oder höher)<br />

- Microsoft DAO 3.6 Object Library (oder höher)<br />

Für <strong>Access</strong> 2002/XP:<br />

- Visual Basic For Applications<br />

- Microsoft <strong>Access</strong> 10.0 Object Library (oder höher)<br />

- Microsoft DAO 3.6 Object Library (oder höher)<br />

Beispiel für <strong>Access</strong> XP<br />

Es können noch weitere Verweise aktiviert sein, aber die o.g. Verweise werden vom<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong> in jedem Fall benötigt.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Zu importierende Objekte:<br />

Folgende Objekte müssen aus der Originaldatei des <strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<br />

<strong>Manager</strong>s in Ihre Anwendung importiert werden:<br />

Tabellen<br />

tbl_Historie<br />

tbl_Historie_Tmp<br />

Formulare<br />

frm_Historie<br />

frm_Historie_Admin<br />

frm_Historie_Admin_1<br />

frm_Historie_Admin_UF<br />

frm_Historie_Details<br />

frm_Historie_gelöscht<br />

frm_Historie_UF<br />

frm_Historie_UF_gelöscht<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Module<br />

mod_Historie<br />

mod_Standard<br />

mod_System<br />

Hinweis:<br />

Die folgenden Formulare sind nur in der PRO-Version des <strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<br />

<strong>Manager</strong>s vorhanden, da nur mit dieser Version Datensätze aus Unterformularen<br />

historisiert werden können.<br />

frm_Historie_Admin_UF<br />

frm_Historie_UF<br />

frm_Historie_UF_gelöscht<br />

Wie importiert man Objekte aus einer anderen <strong>Access</strong>-Datenbank?<br />

Öffnen Sie Ihre Anwendung. Über das Menü Datei / Externe Daten / Importieren<br />

wird der Dateidialog geöffnet. Wählen Sie über diesen Dialog die <strong>Access</strong>-Datei aus,<br />

aus der die Objekte importiert werden sollen. Es öffnet sich der Importdialog, den Sie<br />

in den oben abgebildeten Ansichten sehen. Hier können Sie auswählen, welche<br />

Tabellen, Abfragen usw. Sie in die aktuelle Datenbank importieren möchten.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Erklärung der importierten Module<br />

Tabellen<br />

- tbl_Historie<br />

- Hier werden alle Daten dauerhaft historisiert und aufbewahrt<br />

- tbl_Historie_Tmp<br />

- In dieser Tabelle werden die Daten vor dem Schließen des Formulars bzw.<br />

vor dem Löschen zwischengespeichert.<br />

Wird das Speichern oder Löschen des Datensatzes abgebrochen, werden<br />

diese Daten nicht in die Tabelle tbl_Historie übertragen. Erst nach<br />

erfolgreicher Aktion (Speichern, Löschen oder Schließen des Formulars)<br />

werden aus dieser Tabelle die historisierten Daten in die eigentliche Historien-<br />

Tabelle übertragen. Die Tabelle tbl_Historie_Tmp dient nur der kurzzeitigen<br />

und temporären Zwischenspeicherung der Daten.<br />

Formulare<br />

- In fast allen Listen werden in der Statuszeile der Name des <strong>Access</strong>-Users, des<br />

Windows-User (Windowsanmeldung) und der Name des Rechners<br />

(Hostname) angezeigt. Alle Anzeigen und Listen lassen sich von erfahrenen<br />

<strong>Access</strong>-Entwicklern ändern und optisch anpassen. Sollten Sie eine andere<br />

Darstellung oder Sortierung der Spalten wünschen, ist dies kein <strong>Pro</strong>blem, da<br />

hierzu nur die SQL-Anweisung der Listen geändert werden muss.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


- frm_Historie / frm_Historie_UF<br />

- In diesem Formular werden die Änderungen aufgelistet. Neben dem Datum<br />

und der Uhrzeit werden der Feldname, der alte Feldinhalt und der neue Inhalt<br />

des Feldes dargestellt.<br />

Die Schaltfläche Details öffnet das Formular frm_Historie_Details.<br />

- frm_Historie_Details<br />

- Hier werden alle Infos zum protokollierten Datensatz angezeigt.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


- frm_Historie_gelöscht<br />

- Bei komplett gelöschten Datensätzen muss mehr angezeigt werden, als der<br />

alte und neue Feldinhalt. Um die Daten den früheren Datensätzen zuzuordnen<br />

wird daher neben dem Daten und der Uhrzeit auch die Bezeichnung des<br />

Datensatzes und die Datenherkunft angezeigt. Die Datenherkunft ist entweder<br />

die wirkliche Datenherkunft (RecordSource) und gibt den Namen der Tabelle<br />

oder Abfrage wieder oder Sie geben diese durch eine aussagekräftige<br />

Bezeichnung vor. Im Beispielformular frm_Artikel haben wir diese<br />

Datenherkunft mit dem Text Artikel bezeichnet. Die Bezeichnung des<br />

Datensatzes legen Sie innerhalb des Formulars fest. Hier können Sie<br />

angeben, welche Inhalte aus dem Datensatz für die Listenanzeige verwendet<br />

werden sollen. Bei einem Datensatz für Artikel reicht in aller Regel die<br />

Artikelbezeichnung aus, da diese eindeutig ist. Haben Sie jedoch mehrere<br />

Rechnungen eines Kunden, sollten Sie neben der Kundenbezeichnung z.B.<br />

auch noch die Bestell-Nr. oder Rechnung-Nr. hinzufügen. Die Listenanzeige<br />

lässt sich aus mehreren Feldern zusammensetzen.<br />

Die Schaltfläche Details der Löschung öffnet das Formular frm_Historie und zeigt<br />

nur die Inhalte zum Zeitpunkt der Datensatzlöschung an. Die Schaltfläche Details<br />

Komplett öffnet ebenfalls das o.g. Formular, zeigt hier aber alle Änderungen des<br />

Datensatzes an. Sollten angehängte Datensätze von Unterformularen vorhanden<br />

sein, werden diese durch Klicken von Details UF angezeigt. Hier öffnet sich dann<br />

das Formular frm_Historie_UF_gelöscht.<br />

Möchten Sie den Datensatz mit allen protokollierten Daten aus der Historisierung<br />

entfernen, wählen Sie den gewünschten Datensatz an und klicken auf Löschen.<br />

Hierbei werden auch alle historisierten Daten aus den angehängten Unterformularen<br />

gelöscht.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


- frm_Historie_UF_gelöscht<br />

- Wie im Formular frm_Historie_gelöscht werden hier die gelöschten Daten<br />

angezeigt. Jedoch beschränkt sich diese Anzeige auf die Daten aus<br />

Unterformularen. Daher wird neben Datum, Uhrzeit und Listenanzeige des<br />

UFs auch die Datenherkunft des Datensatzes angezeigt. Diese kann aus der<br />

wirklichen Datenherkunft (RecordSource) oder aus einer eigenen<br />

Bezeichnung bestehen. Da in einem Hauptformular mehrere UFs mit<br />

verschiedenen Datenherkünften vorhanden sein können, kann der Betrachter<br />

sofort erkennen, in welchem Bereich der Anwendung dieser Datensatz früher<br />

angesiedelt war.<br />

Die Schaltflächen Details der Löschung und Details Komplett rufen wie zuvor<br />

beschrieben das Formular frm_Historie mit dem entsprechenden Datenfilter auf.<br />

Durch das Löschen wird nur der jeweilige Datensatz mit allen dazugehörigen Daten<br />

gelöscht. Andere Datensätze dieses Hauptsatzes bleiben davon unbetroffen.<br />

Administrationsansicht<br />

Die Anzeige der Historisierungen und Löschungen in den entsprechenden<br />

Formularen (Artikel, Kunden, Personal, Bestellungen usw.) ist in manchen Firmen<br />

und Unternehmen evtl. gar nicht gewünscht und wird daher über diesen Weg für den<br />

normalen Anwender nicht angeboten. Man kann den Aufruf für die Anzeige der<br />

Historisierungsdetails entweder vom angemeldeten Anwender abhängig machen<br />

oder die Anwendungsadministration verwendet die Adminansicht des <strong>AP</strong>-<br />

<strong>Änderungsprotokoll</strong>-<strong>Manager</strong>s.<br />

- frm_Historie_Admin<br />

- Die Anzeige bietet die Auswahl aller Bereiche, für die historisierte Datensätze<br />

vorhanden sind. Die Schaltfläche Details öffnet das Formular<br />

frm_Historie_Admin_1.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


- frm_Historie_Admin_1<br />

- In dieser Ansicht werden alle Datensätze aus dem zuvor ausgewählten<br />

Bereich (frm_Historie_Admin) angezeigt.<br />

Die Schaltfläche Details öffnet das Formular frm_Historie, Details UF ruft die<br />

Maske frm_Historie_Admin_UF auf.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


- frm_Historie_Admin_UF<br />

- In diesem Formular werden alle historisierten Datensätze aus den<br />

angehängten Unterformularen gezeigt.<br />

Die Schaltfläche Details öffnet das Formular frm_Historie.<br />

Module<br />

- mod_Historie<br />

In diesem Modul befindet sich die gesamte Logik der Historisierung und damit<br />

des <strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong>s. In diesem Modul muss nichts geändert<br />

oder angepasst werden.<br />

- mod_Standard<br />

Einzig eine Funktion, die prüft ob ein angegebenes Formular geöffnet ist, befindet<br />

sich in diesem Modul. Haben Sie in Ihrer Anwendung bereits eine Funktion mit<br />

dem Namen IstGeladen, die ebenfalls diese Prüfung vornimmt, benötigen Sie<br />

dieses Modul nicht.<br />

- mod_System<br />

Die Funktionen dieses Moduls liefern den Windows-Anmeldenamen und den<br />

Computernamen bzw. den Hostnamen. Diese Informationen werden für die<br />

Historisierung verwendet. Wünschen Sie kein Speichern dieser Daten, kann der<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong> dahingehend abgeändert werden.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Anpassung Ihrer Formulare<br />

In diesem Teil der Integrationsdokumentation erfahren Sie, wie Sie den VBA-Code in<br />

Ihre Masken einbauen und die Eigenschaften anpassen, damit die Historisierung<br />

Ihrer Daten erfolgen kann.<br />

Öffnen Sie ein Formular, in welchem Sie die Neuanlagen, Änderungen und<br />

Löschungen protokollieren möchten, in der Entwurfsansicht. Wählen Sie aus dem<br />

Menü Ansicht den Punkt Code aus. Es öffnet sich die Codeansicht des Formulars.<br />

Entwurfsansicht eines Formulars (frm_Bestellungen)<br />

Codeansicht<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Bewegen Sie den Cursor an den Anfang des Moduls und fügen Sie dort nach den<br />

Anweisungen Option Compare Database und Option Explicit folgenden Code ein:<br />

Const Tmp_ID_Feldname = " Kunden-Code"<br />

Const DatenherkunftArt = "DATEN"<br />

Dim Tmp_ID<br />

Dim Tmp_Neuanlage As Boolean<br />

Wie Eingangs bereits erwähnt, benötigen Sie für die Historisierung der Daten einen<br />

eindeutigen Datensatzschlüssel (Autowert oder einen anderen Primary Key). Der<br />

Feldname des Schlüssels muss anstatt dem Text Kunden-Code eingefügt werden.<br />

Lautet der Primary Key Ihres Formulars bzw. der zur grundeliegenden Datenherkunft<br />

z.B. Artikel-Nr, muss die Anweisung wir folgt lauten:<br />

Const Tmp_ID_Feldname = " Artikel-Nr"<br />

Den Inhalt für die Variabel DatenherkunftArt können Sie an dieser Stelle ebenfalls<br />

selbst bestimmen. Der Inhalt soll dazu dienen, bei verschiedenen Formularen mit<br />

gleicher Datenherkunft, unterscheiden zu können, in welchem Formular die Daten<br />

geändert wurden. Sie können hier einen beliebigen Text eingeben.<br />

Die Variablen Tmp_ID und Tmp_Neuanlage werden zum Zwischenspeichern von Daten<br />

verwendet.<br />

Die nachfolgenden Funktionen und <strong>Pro</strong>zeduren kopieren Sie bitte aus der<br />

mitgelieferten Textdatei Code für Formulare.txt und fügen den Text in den<br />

Codebereich Ihres Formulars ein. Wir erklären welche Funktion wann angerufen<br />

wird. Es kann sein, dass es bereits in Ihrem Formular eine gleichnamige Funktion<br />

gibt. In diesem Fall müssen Sie den Funktionsinhalt (Code) aus der eingefügten<br />

Funktion in die vorhandene Funktion kopieren und den Rest (Funktionsanweisung)<br />

löschen. Wir gehen davon aus, sollten Sie bereits eine gleichnamige Funktion in<br />

Ihrem Formular haben, Sie dann auch in der Lage sind, die beiden Funktionen<br />

zusammenzuführen.<br />

Beim Anzeigen: Form_Current<br />

Hier wird geprüft, ob es sich um einen neuen Datensatz handelt, damit bei der<br />

späteren Historisierung entschieden werden kann, ob alle geänderten Daten oder nur<br />

der Hinweis auf eine Neuanlage gespeichert werden soll. Für die Speicherung der<br />

Information wird die zuvor angelegte Variable Tmp_Neuanlage verwendet.<br />

Vor Aktualisierung: Form_BeforeUpdate<br />

An dieser Stelle wird entschieden, ob es eine Neuanlage eines Datensatzes ist oder<br />

eine normale Datenänderung. Entsprechend des Inhalts der Variable Tmp_Neuanlage<br />

wird entweder die Funktion Neuanlage_Zwischenspeichern oder<br />

Historie_Zwischenspeichern aufgerufen. In beiden Fällen werden die Informationen<br />

zunächst in der Tabelle tbl_Historie_Tmp zwischengespeichert.<br />

Nach Aktualisierung: Form_AfterUpdate<br />

Nach dem Schließen des Formulars bzw. Verlassen dieses Datensatzes werden die<br />

Daten aus der Tabelle tbl_Historie_Tmp in die Tabelle tbl_Historie übertragen.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Möchten Sie die komplette Löschung von Datensätzen historisieren, benötigen Sie<br />

noch die beiden folgenden Funktionen:<br />

Beim Löschen: Form_Delete<br />

Diese Funktion wird bei einem Löschvorgang aufgerufen und speichert alle Daten<br />

des Datensatzes zwischen. Dazu wird die Funktion Löschung_Zwischenspeichern<br />

aufgerufen. In dieser Funktion werden auch bei der PRO-Version alle angehängten<br />

Datensätze aus den Unterformularen historisiert.<br />

Nach Löschbestätigung: Form_AfterDelConfirm<br />

Wird diese Funktion aufgerufen, ist die Löschung des Datensatzes bestätigt bzw.<br />

abgeschlossen. Nun können die zwischengespeicherten Daten wie in der Funktion<br />

Form_AfterUpdate (Nach Aktualisierung) in die Tabelle tbl_Historie übertragen<br />

werden.<br />

Soll in diesem Formular die Möglichkeit bestehen, von hieraus die historisierten<br />

Daten einzusehen, müssen zwei Schaltflächen angelegt werden. Haben Sie noch<br />

keine Schaltflächen in einem <strong>Access</strong>-Formular erstellt, hilft Ihnen die <strong>Access</strong>-<br />

Onlinehilfe dabei. Suchen Sie dort nach dem Begriff Befehlsschaltflächen.<br />

Sie benötigen eine Schaltfläche für die Anzeige der Datenänderungen und eine für<br />

die Anzeige der gelöschten Datensätze.<br />

Die Befehlsschaltfläche für die Anzeige der Änderungen, muss den Namen Historie<br />

tragen. Die Beschriftung kann frei gewählt werden. Die Schaltfläche, die alle<br />

gelöschten Datensätze anzeigt muss Gelöschte_DS heißen. Tragen Sie diesen Text<br />

als Namen für diese Befehlsschaltfläche ein.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Haben Sie die Schaltflächen erstellt, fügen Sie bitte aus der zuvor erwähnten<br />

Textdatei den Code für die folgenden Funktionen ein:<br />

Historie – Beim Klicken: Historie_Click<br />

Gelöschte_DS – Beim Klicken: Gelöschte_DS_Click<br />

In beiden Funktionen wird zunächst geprüft, ob bereits Daten für das Anzeigen<br />

vorhanden sind. Ist das der Fall, werden die Formulare frm_Historie bzw.<br />

frm_Historie_gelöscht aufgerufen und die gefilterten Daten für diesen Datensatz<br />

bzw. diese Datenherkunft angezeigt.<br />

Klicken Sie in der Entwufsansicht Ihres Formulars auf die eben angelegten<br />

Schaltflächen, öffnen die Ansicht der Eigenschaften über das Menü Ansicht /<br />

Eigenschaften, scrollen im Bereich Alle (Karteireiter Alle) fast bis an das Ende und<br />

klicken Sie mit einem Doppelklick in das Feld Beim Klicken. Es erscheint, sofern<br />

nicht bereits vorhanden, der Text [Ereignisprozedur]. Sie können auch mit einem<br />

einfachen Klick in das Feld, diesen Text zur Anzeige bringen. Dazu muss im<br />

Anschluss auf die Pfeilschaltfläche geklickt und der o.g. Text ausgewählt werden.<br />

Nun sind die zuvor eingefügten Funktionen Historie_Click und Gelöschte_DS_Click<br />

mit den Befehlsschaltflächen verbunden. Wenn in der Normalansicht des Formulars<br />

auf diese Schaltflächen geklickt wird, werden die Funktionen ausgeführt und die<br />

historisierten Daten in den entsprechenden Masken angezeigt.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


In manchen Funktionen finden Sie folgende Codezeilen:<br />

' Diese Information müssen Sie ggf. ändern (z.B. "Kunden")<br />

Datenherkunft = Me.RecordSource<br />

'Datenherkunft = "Kunden"<br />

Möchten Sie anstatt des Namens der Tabelle bzw. Abfrage eine eigene Bezeichnung<br />

für die Datenherkunft haben, müssen Sie in allen Funktionen dieses Formulars die<br />

Bezeichnung in dem oben dargestellten Code austauschen. Statt Me.RecordSource<br />

fügen Sie dort einen Text Ihrer Wahl in Hochkommas ein.<br />

Wichtige Anmerkung für Änderungen am Code<br />

Verwenden Sie in den Bezeichnungen keine Hochkommas (einfach bzw. doppelt)<br />

und keine Kommas bzw. Semikolons.<br />

Falsch:<br />

"Kund’en"<br />

"Kund"en"<br />

"Kund,en"<br />

"Kund;en"<br />

Hinweise für die PRO-Version und das Historisieren von Unterformularen<br />

Nur in der PRO-Version ist das Historisieren von Datensätzen aus Unterformularen<br />

möglich. Wird ein Hauptdatensatz gelöscht, werden dabei auch die angehängten<br />

Datensätze aus den Unterformularen gesichert.<br />

Um die Neuanlagen, Änderungen und Löschungen innerhalb eines Unterformulars<br />

zu historisieren, benötigen Sie noch weitere Funktionen, die direkt in den<br />

Codebereich des Unterformulars eingefügt werden müssen.<br />

Den kompletten Code eines Unterformulars können Sie im Beispielformular<br />

frm_Bestellungen_UF einsehen.<br />

Als zusätzliche Variable muss folgende Anweisung eingefügt werden:<br />

Const Tmp_ID_Feldname2 = " Artikel-Nr"<br />

Der Text Artikel-Nr ist mit dem Feldnamen des eindeutigen Datensatzschlüssels<br />

Ihres Unterformulars auszutauschen.<br />

Der VBA-Code folgender Funktionen ist der selbe wie im Hauptformular:<br />

Beim Anzeigen: Form_Current<br />

Nach Aktualisierung: Form_AfterUpdate<br />

Nach Löschbestätigung: Form_AfterDelConfirm<br />

Der Code der folgenden Funktion ist für Unterformulare anders:<br />

Vor Aktualisierung: Form_BeforeUpdate<br />

Beim Löschen: Form_Delete<br />

Den gesamten Code für ein Unterformular finden Sie in der Textdatei Code für<br />

Unterformulare.txt.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Anpassung Ihrer Masken und die darin enthaltenen Objekte<br />

(Textfeld, Optionsgruppe, Kontrollkästchen, Listenfeld, Kombinationsfeld, Unterformular)<br />

Zunächst sei angemerkt, dass nur Objekte aus der o.g. Aufzählung historisiert<br />

werden. Es macht wenig Sinn, den Inhalt eines Bezeichnungsfeldes oder einer<br />

Befehlsschaltfläche zu historisieren.<br />

Für die Historisierung und die Ermittlung der genauen Feldinhalte müssen bestimmte<br />

Angaben und Parameter an die entsprechenden Funktionen übergeben werden.<br />

Wird z.B. ein Datensatz gelöscht, wird für die spätere Anzeige ein Listenfeld mit der<br />

Datensatzbezeichnung gefüllt. Das Modul muss wissen, welche Inhalte aus welchem<br />

Feld dafür verwendet werden sollen. Sie legen diese Felder und Informationen in den<br />

Eigenschaften bestimmter Objekte fest. Für einen Großteil verwenden wir dazu die<br />

Eigenschaft Marke bzw. Tag im Englischen. Da diese Eigenschaft in sehr wenigen<br />

Fällen verwendet wird, ist dieses Feld frei und kann mit Informationen für den <strong>AP</strong>-<br />

<strong>Änderungsprotokoll</strong>-<strong>Manager</strong> gefüllt werden.<br />

Ausschluss eines Feldes bzw. Objektes für die Historisierung<br />

Möchten Sie, dass der Inhalt eines bestimmten Feldes nicht historisiert wird, setzen<br />

Sie einfach ein großes X in die Marke-Eigenschaft des jeweiligen Objektes.<br />

Im Beispielformular frm_Kategorien haben wir das Unterformular für die<br />

<strong>Pro</strong>tokollierung durch Setzen der Marke deaktiviert.<br />

Textfeld<br />

Der Inhalt eines Textfeldes wird so übernommen, wie dieser im Feld steht.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Optionsgruppe<br />

Innerhalb einer Optionsgruppe gibt es verschiedene Inhalte, die aktiviert sein<br />

können. Diese Inhalte werden über einen Optionswert gesteuert. Dieser Wert ist eine<br />

Zahl und für die Historisierung nicht sehr aussagekräftig. Daher historisieren wir den<br />

Text, der an diesem Optionsfeld bzw. Kontrollkästchen hängt. Der Name des<br />

jeweiligen Bezeichnungsfeldes muss jedoch eine bestimmte Form haben, damit die<br />

Historisierung erfolgen kann.<br />

Wenn der Namen der Optionsgruppe z.B. Versandunternehmen lautet muss der<br />

Name des Bezeichnungsfeldes für den ersten Wert Versandunternehmen_1 lauten.<br />

Je nach Optionswert hängen Sie an den Namen einfach einen Unterstrich und den<br />

jeweiligen Optionswert an.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Kontrollkästchen<br />

Im Beispielformular frm_Artikel gibt es ein Kontrollkästchen. In der Marke-<br />

Eigenschaft des Feldes Auslaufartikel steht der Text Ja/Nein.<br />

Ist das Feld aktiviert und wird nun deaktiviert, so wird als alter Wert Ja und als neuer<br />

Wert Nein eingetragen.<br />

Möglichkeiten für die Marke-Eigenschaft sind:<br />

- Ja/Nein<br />

- Wahr/Falsch<br />

- Ein/Aus<br />

Listenfeld / Kombinationsfeld<br />

Oft ist der Inhalt eines Feldes, welches über ein Listenfeld dargestellt wird, nur ein<br />

Autowert (Zahl) eines Wertes einer anderen Tabelle. Es macht keinen Sinn, diese<br />

Zahlen als historisierte Werte zu speichern. Vielmehr muss der innerhalb des<br />

Formulars angezeigte Wert historisiert werden. Das Listenfeld wird über eine<br />

Datenherkunft (Tabelle oder Abfrage) mit Daten versorgt. Bestimmte Informationen<br />

dieser Datenherkunft werden an die Funktionen des <strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<br />

<strong>Manager</strong> übergeben. Diese ermittelt dann den eigentlichen Anzeigewert des Feldes.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Syntax<br />

Um den eigentlichen Wert ermitteln zu können werden drei Parameter benötigt.<br />

Der erste Wert bezeichnet den Feldnamen bzw. die Feldnamen und liefert den Inhalt<br />

daraus zurück, welcher dann für dieses Listen-/Kombinationsfeld historisiert wird.<br />

Der zweite Parameter bezeichnet die Datenherkunft. Geben Sie hier die Tabelle oder<br />

Abfrage an.<br />

Um aus der Datenherkunft den richtigen Datensatz ermitteln zu können, benötigt<br />

man einen Filter. Das Listen-/Kombinationsfeld hat einen Inhalt, der meistens eine<br />

Zahl eines Primary Keys oder eines Autowerts ist. Dieser Wert wird von der Funktion<br />

selbständig ermittelt. Was Sie im dritten Parameter angeben müssen ist das Feld, in<br />

dem dieser Wert gesucht werden soll.<br />

Die Parameter müssen mit einem Semikolon getrennt in die Marke-Eigenschaft des<br />

Listen-Kombinationsfeldes eingetragen werden. Achten Sie darauf, dass zwischen<br />

den Parametern und den Semikolons kein Leerzeichen ist.<br />

Im ersten Parameter können Sie mehrere Felder aus der Datenherkunft angeben.<br />

Sie finden hierzu ein Beispiel im Formular frm_Personal im Kombinationsfeld<br />

Vorgesetzter.<br />

Im Beispielformular frm_Kunden gibt es ein Kombinationsfeld Land. Hier wird direkt<br />

der Inhalt, also der Ländername und kein Wert eines Schlüssels oder Autowerts,<br />

zurückgeliefert. In diesem Fall brauchen Sie keine Eintragungen in die Marke-<br />

Eigenschaft des Feldes vorzunehmen.<br />

Weitere Beispiele für eine Wertermittlung mit Parameterübergabe finden Sie in den<br />

Formularen frm_Artikel und frm_Bestellungen. Im zuletzt genannten Formular<br />

haben wir aus Demonstrationszwecken für den Verkaufsberater zusätzlich ein<br />

Listenfeld eingefügt. Die Art der Parameterübergabe ist bei Kombinationsfeldern und<br />

Listenfeldern identisch.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Unterformular (nur bei der PRO-Version)<br />

Verwenden Sie die Marke-Eigenschaften in Unterformularen genau wie es zuvor<br />

beschrieben wurde. Auch in Unterformularen lassen sich die eigentlichen Werte auf<br />

diese Art ermitteln.<br />

Damit in der Historisierung das Feld für die ID_UF mit den richtigen Daten gefüllt<br />

wird, müssen Sie im Unterformular-Objekt des Hauptformulars angeben, welchen<br />

eindeutigen Schlüssel es für die Datenherkunft des UFs gibt. In unserem<br />

Beispielformular frm_Bestellungen ist es für das Unterformular-Objekt<br />

Bestellungen_Unterformular das Feld Artikel-Nr.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Formular / Unterformular<br />

Bei gelöschten Datensätzen oder Datensätzen aus Unterformularen wird eine<br />

Bezeichnung als Listenanzeige angezeigt. Diese wird aus Feldern innerhalb des<br />

Formulars bzw. Unterformulars ermittelt. Damit die entsprechende Funktion die<br />

Daten ermitteln kann, muss in der Marke-Eigenschaft des Formulars bzw.<br />

Unterformulars das Feld bzw. die Felder übergeben werden. Mehrere Feldnamen<br />

getrennt mit Semikolon sind hierbei möglich. Achten Sie darauf, dass zwischen den<br />

Feldnamen und dem Semikolon kein Leerzeichen ist. Bitte geben Sie die Feldnamen<br />

auch ohne Klammern ( [ und ] ) an. Diese werden von der Funktion selbst eingefügt.<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de


Schlußwort:<br />

Wir waren bei der Erstellung dieser Beschreibung bemüht, die Integration des <strong>AP</strong>-<br />

<strong>Änderungsprotokoll</strong>-<strong>Manager</strong>s in Ihre Anwendungen so gut wie möglich zu<br />

beschreiben. Sollten Sie dennoch Fragen zum Einbau des Moduls haben, so<br />

schicken Sie diese per Mail an support@access-paradies.de. Teilen Sie uns in dem<br />

Mail bitte Ihre Kundennummer, Rechnungsnummer und die von Ihnen verwendete<br />

<strong>Access</strong>version mit.<br />

Wir wünschen Ihnen viel Freude an dem <strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

Microsys Kramer<br />

<strong>Access</strong>-<strong>Paradies</strong><br />

http://www.access-paradies.de<br />

http://www.ms-office-forum.net<br />

<strong>AP</strong>-<strong>Änderungsprotokoll</strong>-<strong>Manager</strong><br />

(Modul zum <strong>Pro</strong>tokollieren und Historisieren von Datensatzänderungen und Löschungen)<br />

Microsys Kramer • http://www.access-paradies.de

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!