Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Access vor Schließen aktuelles Datum einsetzen

Begonnen von wolfgang b, November 20, 2020, 19:31:14

⏪ vorheriges - nächstes ⏩

wolfgang b

Guten Abend,
ich habe noch eine kleine Frage:
Was muss ich tun um das aktuelle Datum beim verlassen (oder halt kurz davor) in mein Textfeld (lastDate)
zu schreiben.
Diese VBA haben leider nicht funktioniert:

Private Sub Form_BeforeUpdate(Cancel As Integer)
  Me.lastDate = Now()
End Sub

Private Sub lastDate_BeforeUpdate(Cancel As Integer)
Me.lastDate = Now()
End Sub

Private Sub lastDate_Exit(Cancel As Integer)
    Me.lastDate = Now()
End Sub

mfg
wolfgang

DF6GL

Hallo,

warum willst Du das Datum in ein Textfeld schreiben, wenn das Form eh verlassen wird?

Oder soll das Datum nur dann an das aktuelle angepasst werden, wenn am Datensatz etwas (anderes) verändert wurde?

Nur dann tritt das Form_BeforeUpdate-Ereignis auf, vorausgesetzt das Form ist an eine Tabelle gebunden.


Wenn nicht an dann Daten geändert ist und das Form geschlossen wird, tritt nur (u. a.) das Form_Close-Ereignis auf.

Zudem wäre
Me!lastDate = Date
bei einem Datum ohne Uhrzeit besser gewählt.


wolfgang b

#2
Guten Abend Franz,
ja das Textfeld ist in einem Formular, welches geschlossen wird um mit einem
anderen Formular die Datenbank zu bearbeiten.
Das Datum soll natürlich in eine Tabelle geschrieben werden die zu dem Formular
gehört wo das Textfeld sich drauf befindet.

Hallo Franz,
in meiner Tabelle steht:
Name des Anwenders
Datum öffnen des Anwenders (klappt)
Datum schließen des Anwenders (klappt nicht)
Differenz schließen zu Öffnen   (um die Anwenderzeit festzuhalten)

mfg
wolfgang

MzKlMu

#3
Hallo,
Nimm das Ereignis "Beim Schließen". Und das Formularfeld muss natürlich auch an das entsprechende Tabellenfeld gebunden sein.
Die Differenz in die Tabelle zu schreiben ist überflüssig und falsch obendrein.
Die Differenz wird in einer Abfrage stets aktuell berechnet.
In die Tabelle gehört auch nicht der Name des Anwenders, sondern nur dessen Primärschlüssel als Fremdschlüssel.
Gruß Klaus

wolfgang b

Hallo Klaus,
es funktioniert !
Private Sub Form_Unload(Cancel As Integer)
    Me.lastDate = Now
End Sub

Mein kleines Problem, wenn das Formular geschlossen wird, wird die Datum und Zeit hinterlegt.
Ich muss halt darauf achten das das Formular offen bleibt oder gibt es eine Möglichkeit
unabhängig ob Formulare oder oder Tabellen offen sind. Daher wenn also die Datenbank
geschlossen wird.

mfg
wolfgang

MzKlMu

Hallo,
Du kannst dafür sorgen, dass nur mit einem Button in einem bestimmten Formular es möglich ist die DB zu verlassen. Mit diesem Button schreibst Du dann lastDate.

Im Anhang ein Beispiel. Ist zwar zur Prüfung von Pflichtfeldern gedacht, aber die DB kann nur mit dem Button "Beenden" auf dem 1.Formular verlassen werden, egal was Du versuchst.
Gruß Klaus

Xoar

Alternativ kann man beim Programmstart ein verstecktes Formular öffnen, was beim Schließen der DB natürlich automatisch geschlossen wird, wo dann der Code implementiert werden kann.

wolfgang b

Guten Morgen,
danke an Alle, werde mal sehen wie ich es durchführen kann,
schönes Wochenende

mfg
wolfgang

Beaker s.a.

Hallo Wolfgang,
ZitatMein kleines Problem, wenn das Formular geschlossen wird, wird die Datum und Zeit hinterlegt.
Ich muss halt darauf achten das das Formular offen bleibt
Was willst du denn überhaupt festhalten? Gelten die Felder für das
Formular/die DB oder für die enthaltenen DS?
Wenn du die Verweilzeit in einem Formular festhalten willst, brauchst
du eine eigene Tabelle mit Bezug zum Formular dafür. Dann kannst du
beim Öffnen per INSERT die Zeit festhalten und beim Schliessen per
UPDATE.
Wenn es für die ganze DB gelten soll ist Xoars Vorschlag mit dem
versteckten Form ein üblicher Lösungsweg.
Wenn die Felder in der DS-Herkunft des Forms enthalten sind, brauchst
du das Form nicht extra zu schliessen um die Endezeit zu speichern,
das machst du dann bereits bei "Form_BeforeUpdate".

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)