Zugriffsdatum Ausgabe - tt / mm wurde automatisch geändert mm / dd
-
06-07-2019 - |
Frage
I codiert etwas mit Datum Anweisung in Access VBA. Es funktionierte bis zum Beginn dieses Monats in Ordnung, aber jetzt sehe ich, dass das Datum automatisch das Format von dd/mm/yyyy
mm/dd/yyyy
geändert hat. Hat jemand das gleiche Problem gestoßen?
Lösung
Das Standard-Access SQL Datumsformat, unabhängig von locale ist mm / tt /. Wenn Sie ein ungültiges Datumsformat verwenden, wird es ‚helfend‘ versuchen, dass für Sie ein gültiges Datum zu konvertieren.
Wenn Sie also '30 / 09 / 2008' verwenden, wird es erkennen Sie tt / mm / jjjj verwenden, und entsprechend umzusetzen. Jedoch ist ein Wert wie '10 / 01 / 2008' ist ein gültiger mm / tt / Wert zu beginnen, so wird es nicht umgewandelt werden und gespeichert falsch, falls Sie tatsächlich gemeint tt / mm / jjjj ....
Die Lösung ist immer Ihre Datumswerte zu einer mm / tt / Zeichenfolge zu konvertieren, bevor sie in Access SQL-Anweisungen. Sie haben ein bisschen vorsichtig, hier zu sein, als VBA-Datumsformat Masken vollständig möglicherweise nicht funktionieren, wie Sie auf Nicht-US Gegenden erwarten würden (zB ‚helfend‘ „mm / tt /“ als „das lokalisierten kurzes Datumsformat“ Interpretieren ), so bitte prüfen sorgfältig Ihre spezielle Access / VBA-Version.
Andere Tipps
Der Zugang erfordert ein Datum eindeutig zu sein. Es wird allgemein empfohlen, yyyy / mm / dd verwenden, unabhängig von locale. Zum Beispiel:
strSQL="SELECT SomeDate FROM tblT WHERE SomeDate=#" & Format(DateVar, "yyyy/mm/dd") & "#"
Versuchen Sie diesen Code ein:
stLinkCriteria = "[ProjectDate] Between #" & Format(CDate(Me![txtDateFrom]), "mm/dd/yyyy") & "# And #" & Format(CDate(Me![txtDateTo]), "mm/dd/yyyy") & "#"
Es funktioniert für mich.
Ich habe sehr erfolgreich die DatWert () Funktion. Wenn stammt aus dem ungebundenen Kontrolle immer scheint es klug genug zu sein, um das Format „TT / MM / yyyy“ richtig zu interpretieren. Somit kann ein Jet SQL-Abfrage wie
"Select * from DateTable where StartDate = datevalue(" & me!TxtStartDate & ");"
scheint jedes Mal zu arbeiten.
Das funktioniert:
sentenciaSQL = "UPDATE Numeraciones " & _
"SET Valor = " & Valor & ", " & _
"Fecha = #" & **Format(fecha,"mm/dd/yyyy HH:nn:ss") & "#, " &** _
"Id_Usuario = " & Id_Usuario & _
" WHERE Nombre = '" & Nombre & "'"