September 23, 2021, 12:56:59

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Protokollierung von Änderungen in einer DB

Begonnen von Whathetech, September 14, 2021, 15:11:41

⏪ vorheriges - nächstes ⏩

Whathetech

Hallo. Ich habe wieder mal ein kleines Problem und hoffe auf ein wenig Hilfe:

Ich möchte in meiner Tabelle "tblAenderungen" Änderungen von Daten in der gesamten Datenbank erfassen.

Wenn also eine Änderung in einer irgendeiner Tabelle in der DB gemacht wurde, soll in der Tabelle "tblAenderungen" eine neuer Datensatz angelegt werden.

Die Tabelle "tblAenderungen" hätte ich angehängt, wäre die maximale Dateigröße nicht bloß 0,4 MB...

Deshalb hier die Tabellenspalten: Sie dürfen in diesem Board keine Dateianhänge sehen.

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

Der folgende Beitrag

https://access-basics.de/index.php/aenderungen_protokollieren_Teil_I.html

erklärt das ganze leider nur bis zu einem bestimmten Punkt. Allerdings habe ich nur wenig Ahnung von VBA, würde das ganze aber dennoch ganz gern hinbekommen, hoffentlich mit eurer Unterstützung :)

Vielen Dank schon mal vorab!


ebs17

ZitatÄnderung in einer irgendeiner Tabelle in der DB
Die allermeisten Lösungen wie auch das verlinkte Beispiel gehen nur auf Änderungen ein, die über ein gebundenes Formular erfolgen.
Es sollte einem aber bewusst sein, dass es auch Aktionsabfragen, Recordsetaktionen, Importmaßnahmen und händische Einträge in Tabellen geben kann. Da gibt es also kein Formular, in dem man einen einzelnen Datensatz prüfen kann.

Wenn man über alles prüfen wollte, braucht man Ereignisse bereits auf Tabellenebene. DataMacros, die es ab Acc2010 gibt, leisten so etwas. Hier gibt es eine Beispiel-DB (Anmeldung im Forum erforderlich): Änderungen protokollieren per Datenmakro
Das Gute: Makros sind kein VBA. Übersichtlicher ist es aber keinesfalls.
Sowie: Auf diesem Weg ist kein aktueller Benutzer verwendbar. Die Tabelle (das Backend) weiß nicht, wer mit ihr etwas tut.
Mit freundlichem Glück Auf!

Eberhard

Köbi

Hallo
Eberhard hat mit seinem Einwand natürlich recht.
Wenn es dir aber genügt, nur Änderungen zu protokollieren, welche über ein gebundenes Formular erfolgen, sollte die beiliegende DB weiterhelfen.
Sie entspricht ungefähr dem, was du aus access-basics hast, hat aber eine andere Quelle.

Köbi

Ich sehe gerade, dass du auch noch den Benutzer protokollieren willst, der die Datensatzänderung vornimmt.
Hier die aktualisierte Version.

Whathetech

Zitat von: Köbi am September 15, 2021, 19:42:38Ich sehe gerade, dass du auch noch den Benutzer protokollieren willst, der die Datensatzänderung vornimmt.
Hier die aktualisierte Version.

Schon mal vielen Dank für die Hilfe! Ich habe mittlerweile das Protokollieren von Änderungen einer einzelnen Tabelle in eine Tabelle "tblAuditLog" hinbekommen. Dabei möchte ich aber auch protokollieren, welches Feld genau verändert wurde.

Des Weiteren möchte ich ja nicht nur eine, sondern automatisch die Änderungen aller Tabellen einer Datenbank protokollieren, ohne bei einer neuen Tabelle noch etwas nachprogrammieren zu müssen. Wäre das überhaupt mit Datenmakros möglich und wenn ja, wie?

Tabelle "tblAuditLog": Sie dürfen in diesem Board keine Dateianhänge sehen.

DF6GL

Hallo,

hast Du Dir die Beispieldb überhaupt mal angesehen und getestet?

Zitatohne bei einer neuen Tabelle noch etwas nachprogrammieren zu müssen.

Das geht nicht. Bei jeder , auch bei einer neuen Tabelle müssen die passenden Datenmakros separat eingebaut werden.


Ich empfehle Dir, die DB von Köbi zunächst mal zu probieren und dann in Deine DB einzubauen.  Das erfordert die Datenbearbeitung der Db durch Formulare und nicht direkt in den Tabellen.  Grundsätzlich sollten für die Datenmanipulation nur Formulare zum Einsatz kommen.


Wenn diese Methode funktioniert, Dir aber nicht gefällt, kannst Du Dich an die Datenmakros wagen.





Whathetech

September 16, 2021, 09:52:57 #6 Letzte Bearbeitung: September 16, 2021, 12:58:42 von Whathetech
Das Problem ist, dass ich die Änderungen dann in einer SharePoint Liste angezeigt haben möchte. D.h. über Formulare das zu regeln wäre glaube ich der falsche Ansatz. 

Könnte man das ganze nicht einfach mit einem schicken VBA Code abkürzen, der automatisch die Tabelle mit Änderungen befüllt?

Oder noch einfacher: Man protokolliert durch einen VBA Code einfach nur, dass in irgendeiner Tabelle etwas geändert wurde.

Und noch etwas: Wie befülle ich eigentlich eine Tabelle durch ein Datenmakro, die mit einer SharePoint Seite verbunden ist?

Ich hoffe ihr versteht meine Gedankengänge xD

ebs17

ZitatIch hoffe ihr versteht meine Gedankengänge
Nein.

Sharepoint "versteht" sehr sicher kein VBA, auch kein schickes.

Wenn Du da eine Protokollierung wünschst, müsstest Du Dich sehr genau mit Sharepoint selber und dessen Möglichkeiten beschäftigen (=> Dokumentation lesen). Das wäre meine einfache Überlegung dazu.
Die Vorüberlegungen mit DataMacro (Accesstabelle) oder den Formulargeschichten und VBA-Spielereien kannst Du in die Tonne versenken. Die Analogie, direkt an den Tabellen zu arbeiten, hätte man sich aber selbst ableiten können.

Sinnvoll wäre es ja gewesen, gleich und richtig darzustellen, was GENAU da gemacht werden sollte. Weniger hilfreich ist so eine kurzatmige und gestückelte "Preisgabe" des Anliegens.
Mit freundlichem Glück Auf!

Eberhard

PhilS

Zitat von: Whathetech am September 16, 2021, 09:52:57Das Problem ist, dass ich die Änderungen dann in einer SharePoint Liste angezeigt haben möchte.
[...]
Und noch etwas: Wie befülle ich eigentlich eine Tabelle durch ein Datenmakro, die mit einer SharePoint Seite verbunden ist?
Wo kommt jetzt auf einmal SharePoint her und warum sollten die Änderungen in einer SharePoint-Liste angezeigt werden?

Ich denke nicht, dass es bzgl. der Tabelle und dem Datenmakro Unterschiede gibt.

Wenn alle Tabellen verknüpfte SharePoint-Listen sind, könntest du übrigens auch einfach die Änderungsprotokollierung auf SharePoint aktivieren und dir die Programmierung im Access-Client sparen.

Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!