Дата выдачи доступа - дд / мм автоматически меняется на мм / дд - PullRequest
5 голосов
/ 09 октября 2008

Я что-то кодировал, используя оператор Date в Access VBA. До начала этого месяца все работало нормально, но теперь я вижу, что Дата автоматически изменила формат с dd/mm/yyyy на mm/dd/yyyy. Кто-нибудь еще сталкивался с такой же проблемой?

Ответы [ 5 ]

8 голосов
/ 09 октября 2008

Формат даты Access SQL по умолчанию, независимо от локали, равен мм / дд / гггг. Если вы используете недопустимый формат даты, он «услужливо» попытается преобразовать ее в действительную для вас дату.

Итак, если вы используете '30 / 09/2008 ', он распознает, что вы используете дд / мм / гггг, и конвертирует его соответствующим образом. Однако значение типа «10/01/2008» является допустимым значением в мм / дд / гггг, поэтому оно не будет преобразовано и сохранено неправильно, если вы действительно имели в виду дд / мм / гггг ....

Решение состоит в том, чтобы всегда преобразовывать значения даты в строку мм / дд / гггг, прежде чем использовать их в инструкциях Access SQL. Здесь вы должны быть немного осторожны, так как использование масок формата даты VBA может работать не совсем так, как вы ожидаете в неамериканских локалях (например, «услужливо» интерпретировать «mm / dd / yyyy» как «локализованный формат короткой даты») ), поэтому, пожалуйста, внимательно проверьте вашу конкретную версию Access / VBA.

3 голосов
/ 10 октября 2008

Доступ требует однозначной даты. Обычно рекомендуется использовать гггг / мм / дд независимо от локали. Например:

strSQL="SELECT SomeDate FROM tblT WHERE SomeDate=#" & Format(DateVar, "yyyy/mm/dd") & "#"
1 голос
/ 24 февраля 2012

Попробуйте этот код:

stLinkCriteria = "[ProjectDate] Between #" & Format(CDate(Me![txtDateFrom]), "mm/dd/yyyy") & "# And #" & Format(CDate(Me![txtDateTo]), "mm/dd/yyyy") & "#"

Это работает для меня.

0 голосов
/ 12 июня 2015

Это работает:

sentenciaSQL = "UPDATE Numeraciones " & _
"SET Valor = " & Valor & ", " & _
"Fecha = #" & **Format(fecha,"mm/dd/yyyy HH:nn:ss") & "#, " &** _
"Id_Usuario = " & Id_Usuario & _
" WHERE Nombre = '" & Nombre & "'"
0 голосов
/ 23 марта 2010

Я был очень успешным, используя функцию datevalue (). При получении дат из несвязанных элементов управления это кажется достаточно умным, чтобы правильно интерпретировать формат «дд / мм / гггг». Таким образом, запрос Jet SQL типа

"Select * from DateTable where StartDate = datevalue(" & me!TxtStartDate & ");"

, кажется, работает каждый раз.

...