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?

War es hilfreich?

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 & "'"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top