AP-Änderungsprotokoll-Manager Pro - Access-Paradies
AP-Änderungsprotokoll-Manager Pro - Access-Paradies
AP-Änderungsprotokoll-Manager Pro - Access-Paradies
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