Как правильно установить свойство ADODB.Recordset.Filter для значения DateTime? - PullRequest
0 голосов
/ 25 января 2012

У меня есть набор записей ADODB 2.x, и я пытаюсь применить фильтр к столбцу / полю DateTime в наборе записей.

Я не знаю, как они настроили свои международные настройки формата даты в Windows. Из большого количества прибегая к помощи, я не совсем уверен, что параметры формата даты Windows определяют требуемый формат даты для свойства Filter, или всегда ли это ожидается в формате даты США. (Конечно, документация MS не обращает на это внимания.)

Итак, как правильно написать эту строку кода, чтобы мне не пришлось беспокоиться о том, какой формат даты настроил пользователь в Windows:

rs.Filter = "StartDateTime >= " & dteStartDate

... где dteStartDate содержит компонент даты и времени.

1 Ответ

0 голосов
/ 30 августа 2014

Формат фильтра должен быть в том же формате, что и значение в наборе записей. Я только что столкнулся с той же проблемой с набором записей с сервера MS SQL. набор записей содержал дату в формате ГГГГ-ММ-ДД.

Это не удалось:

CalendarRS.filter = "DateField = #" & datevalue(DisplayDate) & "#"

Даже если дата совпадает, в отфильтрованном наборе записей нет записей. Если этот флажок установлен, значением, сохраненным в CalendarRS.filter, было «DateField = # 08/29/2014 #». Обратите внимание, что в нем содержатся косые черты и порядок отличается (ММ / ДД / ГГГГ)

Это удалось:

CalendarRS.filter = "DateField = #" & year(datevalue(DisplayDate)) & "-" &  right("00" & month(datevalue(DisplayDate)),2) & "-" &  right("00" & day(datevalue(DisplayDate)),2) & "#"

Если этот флажок установлен, значением, сохраненным в CalendarRS.filter, было «DateField = # 2014-08-2014 #». Это вернуло правильный отфильтрованный набор записей.

Для полной даты и времени вам нужно сделать то же самое и добавить час, минуту, секунду.

 CalendarRS.filter = "DateField = #" & year(datevalue(DisplayDate)) & "-" & right("00" & month(datevalue(DisplayDate)),2) & "-" & right("00" & day(datevalue(DisplayDate)),2) & " " & Right("00" & Hour(datevalue(DisplayDate)),2) & ":" & Right("00" & Minute(datevalue(DisplayDate)),2) & ":" & Right("00" & Second(datevalue(DisplayDate)),2) & "#"
...