Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Automatisches Protokollieren von Wertänderungen

499 views
Skip to first unread message

Konrad Hammerer

unread,
Aug 4, 2008, 3:00:56 AM8/4/08
to
Hallo!

Ich habe ein Formular in Access, hinter dem eine DB-Tabelle hängt. Nun
möchte ich bei JEDER Änderung eines Feldes einen Protokoll-Eintrag in
einer extra Tabelle vornehmen (Beispiel: ID, Username, Alter Wert, Neuer
Wert, Timestamp usw.). Nun könnte man dies mit VBA bei einem geeigneten
Event (evtl. Before_Update) jedes einzelnen Elementes machen. Gibt es da
eine elegantere Lösung als diese, die nur an einer Stelle implementiert
wird?

Danke,
Konrad

Henry Habermacher

unread,
Aug 4, 2008, 5:00:10 AM8/4/08
to
Hallo Konrad

"Konrad Hammerer" <konrad....@tesis.de> wrote in message
news:12178332...@gzpc.tesis.de...


> Hallo!
>
> Ich habe ein Formular in Access, hinter dem eine DB-Tabelle hängt. Nun
> möchte ich bei JEDER Änderung eines Feldes einen Protokoll-Eintrag in
> einer extra Tabelle vornehmen (Beispiel: ID, Username, Alter Wert, Neuer
> Wert, Timestamp usw.). Nun könnte man dies mit VBA bei einem geeigneten
> Event (evtl. Before_Update) jedes einzelnen Elementes machen. Gibt es da

Das wäre ein denkbar schlechter Ort, um das zu machen. Wenn schon, dann im
After_Update des Formulars (oder ganz am Ende des Before_Update des
formulars).

Wieso schlecht: Weil die Änderung, die Du im Before_Update Ereignis des
Feldes bekommst, noch rückgängig gemacht werden kann. Zudem werden diese
Ereignisse nicht anlaufen, wenn der Wert über VBA geändert wird, also nicht
über den User Input. Der Form_Before/AfterUpdate ist der letzte, rsp. der
ersten Event direkt vor, rsp. nach dem Seichern des Datensatzes. Dieser
läuft immer an, wenn sich im Datensatz was geändert hat und dieser
geschrieben werden muss oder wurde.

> eine elegantere Lösung als diese, die nur an einer Stelle implementiert
> wird?

Ja, eben wie oben beschrieben. Siehe diesbezüglich auch FAQ.

Gruss
Henry
--
Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Konrad Hammerer

unread,
Aug 4, 2008, 8:38:41 AM8/4/08
to
Hallo!

Danke für die Antwort. Ich würde also im entsprechenden Event des Forms
Code einbauen, der alle Felder nach und nach auf Änderung prüft und
diese dann protokolliert, richtig? Wie könnte denn eine solch eine
Prüfung aussehen?

Danke,
Konrad

Henry Habermacher schrieb:

Henry Habermacher

unread,
Aug 4, 2008, 9:30:25 AM8/4/08
to
Hallo Konrad

"Konrad Hammerer" <konrad....@tesis.de> wrote in message

news:12178535...@gzpc.tesis.de...


> Danke für die Antwort. Ich würde also im entsprechenden Event des Forms
> Code einbauen, der alle Felder nach und nach auf Änderung prüft und diese
> dann protokolliert, richtig? Wie könnte denn eine solch eine Prüfung
> aussehen?


Genau so wie Du schreibst:
If Not Me.NewRecord = True Then
If Me!DeinFeld.OldValue <> Me!DeinFeld.Value Then
Protokolliere Me!DeinFeld
End If
..
If Me!DeinFeldX.OldValue <> Me!DeinFeldX.Value Then
Protokolliere Me!DeinFeldX
End If
End If

Nun brauchst Du nur noch eine Sub Protokolliere(ctl as Control), der Du das
Feld übergeben kannst und die dann das Protokollieren übernimmt.

Du kannst auch generisch vorgehen und einfach alle Controls des Forms über
die Me.Controls Collection durchgehen.

dim ctl as Control
For each ctl in Me.Controls
..
Next

bei den .. steht dann der Code, der rausfindet, ob das Control gebunden ist
und kontrolliert dann wie oben, ob sich der Inhalt verändert hat.

Konrad Hammerer

unread,
Aug 4, 2008, 10:39:16 AM8/4/08
to
Danke für die ausführliche Antwort! Das hilft mir auf jeden Fall weiter...

Grüße,
Konrad

Henry Habermacher schrieb:

blacky

unread,
Aug 6, 2008, 7:17:50 AM8/6/08
to
On 4 Aug., 15:30, "Henry Habermacher" <DontSpamHe...@psp-online.com>
wrote:
> Hallo Konrad
>
> "Konrad Hammerer" <konrad.hamme...@tesis.de> wrote in message

Hallo,

ich habe ein Projekt "Part11" laufen, bei dem alle Änderungen in
Access mitprotokolliert werden müssen (auch über Formular). Ich konnte
mir nur helfen, indem ich die Systentabellen auswerte. Wenn du nähere
Informationen brauchst, bitte melden.

Gruß

Jürgen

Henry Habermacher

unread,
Aug 6, 2008, 8:27:12 AM8/6/08
to
Hallo blacky

"blacky" <hans-juerg...@gmx.net> wrote in message
news:9f0b2096-4918-476d...@59g2000hsb.googlegroups.com...


ich habe ein Projekt "Part11" laufen, bei dem alle Änderungen in
Access mitprotokolliert werden müssen (auch über Formular). Ich konnte
mir nur helfen, indem ich die Systentabellen auswerte. Wenn du nähere
Informationen brauchst, bitte melden.


==> Das ist ja interessant: Du hast einen Weg gefunden, in Echtzeit unter
Auswertung der Systemtabellen herauszufinden, welche Werte in welchen
Tabellenfeldern (also Feldinhalte einzelner Records) geändert wurden? Oder
meinst Du vielleicht Strukturänderungen? Falls ersteres (wir sprechen hier
von Wertänderungen, nicht Strukturänderungen), wäre es sehr interessant,
wenn Du den Lösungsansatz hier posten könntest, den Du realisiert hast.
Ewiges Lob und Dank wird Dein Lohn sein ;-)

0 new messages