Hallo,
mich beschäftigt gerade Folgendes: Ich möchte gerne das Datum für ein bestimmtes Ereignis über meine Datenbank dokumentieren (z.B. Aktualisierung einer Datenquelle). Hierfür habe ich mir eine Tabelle mit dem Datumsfeld und einen Button im Formular erstellt. Immer wenn ich den Button betätige, soll das Datum in der Tabelle dokumentiert werden, und zwar jeweils in einer neuen Zeile. Aktuell wird immer das vorher gespeicherte Datum überschrieben. Ich nutze folgenden Code:
Private Sub ADatum_Click()
Me!Aktualisierung = Date
End Sub
Wie bekomme ich es hin, dass das Datum per Buttoncklick immer in einer neuen Zeile der Tabelle tabDate gespeichert wird?
Danke
Hallo,
was genau willst Du erreichen?
Soll das eine Art Historie für Änderungen an einer oder mehreren Tabellen (, bzw. deren Datensätzen) ergeben oder soll lediglich das Datum der Änderung in genau diesem Datensatz hinterlegt werden?
Zitat von: DF6GL am April 08, 2021, 10:10:03was genau willst Du erreichen?
Hallo,
es geht um einen recht einfachen Mechanismus: Vereinfacht gesagt soll immer nach Betätigung der Schaltfläche in der Tabelle ein Datumswert in einer neuen Zeile eingetragen werden.
Gruß
Hallo,
ZitatWie bekomme ich es hin, dass das Datum per Buttoncklick immer in einer neuen Zeile der Tabelle tabDate gespeichert wird?
1) Anfügeabfrage
2) Recordset (addnew)
Hallo,
Zitatrecht einfachen Mechanismus
?? ??
Es ergibt also eine Tabelle (Wie heißt die?), in der Datensätze mit nur je einem Datumswert enthalten sind?
Was machst Du dann damit?
Zitat von: DF6GL am April 08, 2021, 13:50:02Es ergibt also eine Tabelle (Wie heißt die?),
Hallo,
die Tabelle heisst "tabDate" (siehe Eingangspost). Sie dient lediglich der Dokumentation, wann eine bestimmte Aufgabe erledigt wurde. Es wird nichts berechnet oder so; es müssen lediglich Datumsangaben festgehalten werden.
Ich denke, Du kannst Franz' Zweifel an der Sinnhaftigkeit einer Tabelle mit nur einer Spalte (Datum) nicht nachvollziehen...
Hallo,
ZitatSie dient lediglich der Dokumentation, wann eine bestimmte Aufgabe erledigt wurde.
Ok, und wo ist die Zuordnung zu den bestimmten Aufgaben??
Das ist keine Dokumentation, nur ein Zettel mit aussagelosen Datumswerten. Da kann ich gleich einen leeren Kalender hernehmen und behaupten, das seien meine Tätigkeiten gewesen.. 8)
Zitat von: DF6GL am April 08, 2021, 19:41:50Hallo,
ZitatSie dient lediglich der Dokumentation, wann eine bestimmte Aufgabe erledigt wurde.
Ok, und wo ist die Zuordnung zu den bestimmten Aufgaben??
Das ist keine Dokumentation, nur ein Zettel mit aussagelosen Datumswerten. Da kann ich gleich einen leeren Kalender hernehmen und behaupten, das seien meine Tätigkeiten gewesen.. 8)
Da gebe ich dir recht, Dokumentation ist "übertrieben - ich bitte auch um Nachsicht, da ich mich noch in Access einarbeite. Aber nochmal zum Hintergrund: Es gibt (1) eine Person, die regelmäßig Datenaktualisierungen vornimmt. Dies erfolgt in diesem Fall über Lösch/Aktualisierung/Anfügeabfragen, die über einen Button gesteuert werden. Aus Gründen der Einfachheit wollte ich einen weiteren Button/Schaltfläche ins Formular setzen, der 1) das Datum der letzten Aktualisierung im Formular anzeigt und 2) dieses in der Tabelle festhält. Da nur eine Person dafür verantwortlich ist, fand ich dieses "händische" Vorgehen legitim. Ziel ist, im Formular das Datum der letzten Aktualaisierung abzubilden und im Längsschnitt soll darstellbar sein, in welchen Abständen die Aktualisierung stattfand.
Ich fand das Vorgehen besser, als lediglich händische Notizen "auf einem Zettel" anzufertigen. Sicherlich könnte man das auch direkt mit der Schaltfläche für o.g. Abfragen verbinden.
Gruß
Etwa so:
Sub InsertIntoDate()
CurrentDB.Execute "INSERT INTO DeineTabelle " _
& "(DeinDatumsfeld) VALUES " _
& "(Date())", dbfailonerror
End Sub
Hallo,
Zitatich bitte auch um Nachsicht
übe ich ja schon ... ;) :D
ZitatDies erfolgt in diesem Fall über Lösch/Aktualisierung/Anfügeabfragen, die über einen Button gesteuert werden
Warum verwendetest Du nicht ein gebundenes Formular? Dann kann ganz einfach ein DS geändert, angefügt und gelöscht werden. Gleichzeitig kann dann im Form_BeforeUpdate-Ereignis das aktuelle Datum in ein Datum/Uhrzeit-Tabellenfeld ("LetzteÄnderungAm" eingesetzt werden. Beim Löschen eines DS macht das allerdings keinen Sinn, denn was weg ist, ist weg.. 8) .
ZitatZiel ist, im Formular das Datum der letzten Aktualaisierung abzubilden
Es wird nicht im Formular "abgebildet", das aktuelle Datum wird in der Tabelle abgelegt und vom Formular wie jedes andere Tabellenfeld bei einem gebundenen Formular datenmäßig in einem Steuerelement angezeigt.
Zitatund im Längsschnitt soll darstellbar sein, in welchen Abständen die Aktualisierung stattfand.
Hier sprichst Du aber eine ganz andere Vorgabe an. Es handelt sich hierbei um eine "Änderungshistorie", bei der jede Änderung/Löschung bezüglich des/der betroffenen Tabellenfelder einschließlich des aktuellen Datums und evtl. des aktuellen Users in einer Log-Tabelle erfasst wird.
Sowas nennt sich "Audittrail" und ist u. a. im DBWiki (siehe u. st. Link) zu finden.
https://web.archive.org/web/20170302102246/http://dbwiki.net/images/2/2c/AccSampleAuditTrail.zip
Die einfachste Version wäre eine Tabelle:
tblHistorie
HistID (Autowert)
Hist_DSID (Long) enthält die ID des geänderten DS
Hist_Tab (Text) enthält den Tabellennamen
Hist_Datum (Datum/Uhrzeit) enthält das Änderungsdatum
Hist_User (Text) enthält den Usernamen
Hist_Status (Long) enthält die ID der Maßnahme, 1: Änderung, 2: Löschung, 3: Neuer DS
Bearbeitung der Tabelle im Form_Afterupdate-Ereignis bzw. im "Form_Delete"-Ereignis.
ZitatIch fand das Vorgehen besser, als lediglich händische Notizen "auf einem Zettel" anzufertigen. Sicherlich könnte man das auch direkt mit der Schaltfläche für o.g. Abfragen verbinden.
Da stimme ich zu. Nur mach es richtig....
Zitat von: Maxel am April 09, 2021, 11:29:55Etwa so:
Sub InsertIntoDate()
CurrentDB.Execute "INSERT INTO DeineTabelle " _
& "(DeinDatumsfeld) VALUES " _
& "(Date())", dbfailonerror
End Sub
Hallo Max, Klasse, vielen Dank für diesen Vorschlag, welcher genau die o.g. Anforderungen erfüllt.