Forums Neueste Beiträge
 

Änderungen protokollieren

03/02/2009 - 20:44 von Michael Ernst | Report spam
Hallo,

ich verwende in Access 2003 (unter XP Pro) ein Hauptformular mit 6
eingebundenen Unterformularen, um damit in verschiedenen Tabellen Datensàtze
neu anzulegen oder zu àndern. Ich würde nun gerne in diesem Formular ein Feld
hinzufügen, welches das aktuelle Datum immer dann einfügt, wenn der Datensatz
im Hauptformular oder in einem der eingebundenen Unterformulare neu angelegt
oder veràndert wurde. Ich muß nicht wissen, welches der Unterformulare
veràndert wurde. Mir würde es reichen, wenn die Änderung im Haupt- oder in
einem der Unterformulare zur Eintragung des Datums in dem Datumfeld ("Letze
Aktualisierung") führt.

Bei Donkarl (#2.23) habe ich dazu folgende Anleitung gefunden:
"Für die Protokollierung von Änderungen an bestehenden Datensàtzen muss ein
Formular verwendet werden, weil das programmiert werden muss. [...] Die
andere Gruppe von Entwicklern möchte sicher gehen, dass die Protokollfelder
nur gefüllt werden, wenn die Aktualisierung tatsàchlich durchgeführt und
nicht etwa durch irgendwelche Einschrànkungen verhindert wurde. Deshalb wird
beim Ereignis Nach Aktualisierung Code wie der folgende verwendet:

Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone

rs.Bookmark = Me.Bookmark
rs.Edit
rs!MeinDatumsfeld = Now
rs!MeinBenutzerfeld = CurrentUser
rs.Update

Set rs = Nothing"
Soweit Donkarl
Frage: Wie muß ich die Anleitung von Donkarl verstehen? Kann ich in meinem
Hauptformular einfach ein Datumsfeld anlegen und in den Feldeigenschaften
dieses Feldes unter "Nach Aktualisierung" den obigen Code eingeben? ich habe
das versucht, aber ohne Erfolg.

Vielen Dank für eine kurze Anleitung.

Mit besten Grüßen
Michael Ernst
 

Lesen sie die antworten

#1 Peter Doering
04/02/2009 - 01:29 | Warnen spam
Hallo,

Michael Ernst wrote:

ich verwende in Access 2003 (unter XP Pro) ein Hauptformular mit 6
eingebundenen Unterformularen, um damit in verschiedenen Tabellen Datensàtze
neu anzulegen oder zu àndern. Ich würde nun gerne in diesem Formular ein Feld
hinzufügen, welches das aktuelle Datum immer dann einfügt, wenn der Datensatz
im Hauptformular oder in einem der eingebundenen Unterformulare neu angelegt
oder veràndert wurde. Ich muß nicht wissen, welches der Unterformulare
veràndert wurde. Mir würde es reichen, wenn die Änderung im Haupt- oder in
einem der Unterformulare zur Eintragung des Datums in dem Datumfeld ("Letze
Aktualisierung") führt.

Bei Donkarl (#2.23) habe ich dazu folgende Anleitung gefunden:
"Für die Protokollierung von Änderungen an bestehenden Datensàtzen muss ein
Formular verwendet werden, weil das programmiert werden muss. [...] Die
andere Gruppe von Entwicklern möchte sicher gehen, dass die Protokollfelder
[...]
Soweit Donkarl
Frage: Wie muß ich die Anleitung von Donkarl verstehen? Kann ich in meinem
Hauptformular einfach ein Datumsfeld anlegen und in den Feldeigenschaften
dieses Feldes unter "Nach Aktualisierung" den obigen Code eingeben? ich habe
das versucht, aber ohne Erfolg.



Der Hinweis steht eigentlich auch in der FAQ, in dem von dir mit [...]
zizierten Teil ;-)

Der Code darf nicht in Before/AfterUpdate des Feldes, sondern des
*Formulars* stehen, je nachdem, fuer welche Methode du dich entscheidest.

Mir persoenlich wuerde Methode 1 reichen:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Me!MeinDatumsfeld = Now
Me!MeinBenutzerfeld = CurrentUser
End Sub

Form_BeforeUpdate wird nur ausgefuehrt, wenn tatsaechlich am Datensatz
etwas veraendert worden ist.

Die Anforderung, dass Aenderungen in einem der UFos ebenfalls im HF
protokolliert werden sollen, kannst du dadurch umsetzen, dass in jedem UFo
in Form_BeforeUpdate die gleichen Felder aktualisiert werden. Im UFo sieht
die Prozedur so aus:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.Parent!MeinDatumsfeld = Now
Me.Parent!MeinBenutzerfeld = CurrentUser
End Sub

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
NEK1 Zusatztermin wg. hoher Nachfrage:
Sa/So 21./22.3.2009 http://www.donkarl.com/NEK

Ähnliche fragen