Frage von klugshicer, 26

Wie kann man in VBA (Access 2010) zwei US-Datumsangaben vergleichen?

Hallo,

ich muss in einem VBA-Script zwei Datumsangaben vergleichen.

Die Datumsangaben liegen in zwei Variablen 'startDatum' und 'endDatum' und sind als US-Datum formatiert:

#m/d/yyyy#

Also z.B. so:

Dim startDatum = "#4/21/2014#"
Dim endDatum = "#5/31/2016#"

Die Datumsangabe müssen aus technischen Gründen im US-Format formatiert sein und ich benötige eine Möglichkeit festzustellen, ob das startDatum kleiner-gleich endDatum ist.

Weiß jemand wie man die beiden Datumsangaben vergleichen kann?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Herb3472, 19

Die Datumsangabe müssen aus technischen Gründen im US-Format formatiert sein

Das verstehe ich nicht ganz. Das Format betrifft ja nur den angezeigten und nicht den gespeicherten Wert. Du kannst doch die Datumsvariable jederzeit in Dein gewünschtes Format umformatieren?

Datum = Format([Date];"MM.DD.YYY")

Kommentar von klugshicer ,

Das Problem ist, dass die deutsche Access-Version mit zwei verschiedenen Datentypen arbeitet die untereinander inkompatibel sind.

  • Formularfelder arbeiten mit EU-Datum
  • VBA in Bezug auf Tabellen arbeitet mit US-Datum
  • CDate kann in der deutschen Version kein US-Datum in EU-Datum umwandeln.
  • DateDiff kann in der deutschen Access-Variante nur EU-Datum verarbeiten.
  • der Datentyp Date im deutschen Access verwendet das Deutsche Datumsformat ohne Rauten.

inzwischen habe ich eine Lösung gefunden, ich wandle die Datumseingaben aus dem Formular einmal in EU-Datum und einmal in US-Datum um.

Dann arbeite ich parallel mit zwei verschiedenen Datumsformaten US und EU und je nach dem welche Funktion welches Format benötigt  suche ich mir die Variable mit dem passenden Format aus.

Antwort
von MatthiasHerz, 13

Egal, welches Format zur Anzeige benutzt, zum Vergleich ziehst die beiden Daten voneinander ab.

Ist startDatum abzüglich endDatum negativ, stimmt die Reihenfolge.

Keine passende Antwort gefunden?

Fragen Sie die Community