Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: BikeArno am April 08, 2021, 09:30:42

Titel: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: BikeArno am April 08, 2021, 09:30:42
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


Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: DF6GL am April 08, 2021, 10:10:03
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?




Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: BikeArno am April 08, 2021, 12:06:52
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ß 
Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: steffen0815 am April 08, 2021, 12:53:27
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)
Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: DF6GL am April 08, 2021, 13:50:02
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?


Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: BikeArno am April 08, 2021, 15:45:19
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.

Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: Maxel am April 08, 2021, 17:22:23
Ich denke, Du kannst Franz' Zweifel an der Sinnhaftigkeit einer Tabelle mit nur einer Spalte (Datum) nicht nachvollziehen...
Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: DF6GL am April 08, 2021, 19:41:50
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)
Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: BikeArno am April 09, 2021, 09:44:49
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ß
Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: Maxel am April 09, 2021, 11:29:55
 Etwa so:

   Sub InsertIntoDate()
     
        CurrentDB.Execute "INSERT INTO DeineTabelle " _
            & "(DeinDatumsfeld) VALUES " _
            & "(Date())", dbfailonerror     
     
    End Sub
Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: DF6GL am April 09, 2021, 13:34:21
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....
Titel: Re: Datumsfeld in Tabelle jeweils in neuer Zeile
Beitrag von: BikeArno am April 10, 2021, 11:09:35
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.