Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Access: Zeitraum zwischen 2 Datumseingaben





Frage

Hallo, ich habe folgendes Problem. Ich möchte eine Zeitdifferenz (in Tagen) zwischen 2 Datumseingaben berechnen. Das eine Datum steht in der Tabelle, das andere kommt aus einem Formular (Benutzereingabe). Das es irgendwie mit dem DatDiff-Befehl gehen wird ist mir klar, aber wie ? Wie komme ich an das vom Benutzer eingegebene Datum im Formular ran ? Ich bin für jede Hilfe dankbar, Gruss stol0014

Antwort 1 von oliverV

Und nochmal Hallo :-),

verwende als VBA-Code sinngemäß folgendes:
[Code]Me.TageDifferenz = DateDiff("d", Me.Kaufdatum, Me.Enddatum)

Dabei ist es egal, ob [Kaufdatum] und [Enddatum] gebunden oder ungebunden sind.
Als Ereignis für den Code verwende das Formularereignis "Beim Anzeigen", sowie die "NachAktualisierungs"-Ereignisse der Felder [Kaufdatum] und [Enddatum].
(das erste Ereignis wird beim Formularöffnen und beim Datensatzwechsel ausgelöst; die anderen beiden Ereignisse...wie der Name schon sagt).

Gruß

Oliver

Antwort 2 von stol0014

Hallo oliverV,

Danke für die Hilfe. Hab bloß noch ein Problem mit der Umsetzung, da das erste Datum aus einer Tabelle kommt und nicht vom Formular. Wie spreche ich das an ? Ist das so (Beispiel: Tabellenname.Kaufdatum) möglich ?
Gruss
stol0014

Antwort 3 von oliverV

Füge dein [Kaufdatum] einfach in dein Formular als gebundenes Feld ein. Mit dem Code beziehst du dich dann auf das Formularfeld.
Falls das [Kaufdatum] nicht im Formular angezeigt werden soll, kann du die Sichtbar-Eigenschaft auf "nein" stellen; funktioniert dennoch.

Ein direkter Bezug zur Tabelle bekommst du durch die Domänen-Funktionen, allerdings musst du dann eine Where-Klausel einfügen, denn du willst ja sicherlich eine bestimmtes Kaufdatum haben, sprich einen bestimmten Datensatz haben.

Diese Variante wäre ein großer Umweg, du solltest also den direkten 1. Weg gehen.

Gruß

Oliver

Antwort 4 von stol0014

Hallo oliverV,

Nochmals danke für die Hilfe, aber ich glaube ich muss doch den 2.Weg gehen. Ich habe eine Tabelle mit vielen Geräte und Kaufdatums bzw. Prüfdatums. Und jetzt möchte ich mittels eine Formulareingabe (Abfrage_Prüf.Datum)prüfen, wieviel Zeit noch bis zur Prüfung bleibt bzw. ob eine Prüfung schon fällig ist (verbleibende Tage =0). Wie funktioniert das dann mit den Domänen-Funktionen ?
Nochmals danke für die Hilfe,

Gruss
stol0014

Antwort 5 von oliverV

Ok, jetzt wirds konkreter...
Die Domänen-Funktionen kannst du in dem Fall vergessen, da du damit nur einen Datensatz selektieren kannst.

Ich würde folgendermaßen vorgehen:
Erstelle ein Endlosformular mit deinen Geräten, Kauf- u. Prüfdatum.
Füge im Formularkopf ein ungebundenes Textfeld "Datumsabfrage" ein, stelle für dieses Feld ein Datumsformat ein (z.B. Datum, kurz).

Erweitere nun die Datenherkunft des Formulars um das Feld Fälligkeit; zur Berechnung der Fälligkeit verwende das Prüfdatum und einen Formularfeldbezug zu dem eben erstellten Feld. Sinngemäß dürfte die SQL-Ansicht ungefähr so aussehen:

SELECT Tabelle1.Gerätebezeichnung, Tabelle1.Kaufdatum, Tabelle1.Prüfdatum, DateDiff("d",Formulare!Formular1!Datumsabfrage,[Prüfdatum]) AS Fälligkeit
FROM Tabelle1
ORDER BY DateDiff("d",Formulare!Formular1!Datumsabfrage,[Prüfdatum]) DESC;


Füge nun das Feld [Fälligkeit] in dein Formular ein.

Wenn du nun wieder in die Formularansicht wechselst, wird natürlich keine Fälligkeit angezeigt, da das Feld [Datumseingabe] noch leer ist, also die Basis für die Berechnung noch fehlt.

Nachdem du nun ein Abfragedatum eingegeben hast, musst du das Formular aktualisieren (die Grundlage der Datenherkunft hat sich ja jetzt geändert). Verwende dazu "NachAktualisierung" des Feldes [Datumsabfrage] folgenden VBA-Code:
[Code]Me.Requery[/Code]

Das sollte es dann gewesen sein; die Formularfelder im Detailbereich solltest du sperren um ein ungewolltes Überschreiben zu vermeiden.

Viel Erfolg beim Nachbauen

Oliver

Antwort 6 von stol0014

Hallo oliverV,
Vielen Dank für die ausführliche Hilfe ! Werde ich gleich mal ausprobieren.
Gruss
stol0014

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: