Поиск по дате и дате не работает - PullRequest
0 голосов
/ 31 января 2020

У меня есть запрос ниже

 sql_query = "select * from bericht where fromtime = " & Me.von & " and b_date = #" & Me.l_date & "#"

он выводит следующую строку путем отладки.

select * from bericht where fromtime = 6 and b_date = #1/30/2020#

в таблице b_date равно dateTime field. ( связанная таблица с SQL сервера в Msaccess )

в этой таблице есть данные с 1/30/2020 2:00:00 PM, где fromtime также равен 6.

почему запрос не вернул никаких данных?

может msaccess не может найти дату в поле datetime?

PS: fromtime - поле intiger, а не время.

Ответы [ 2 ]

2 голосов
/ 31 января 2020

Аналогичным образом, рассмотрите возможность поиска во всех датах в пределах диапазона дат, поскольку DateValue может иметь проблемы с эффективностью:

select * from bericht 
where fromtime = 6 
  and b_date >= CDate("2020-01-30") 
  and b_date < CDate("2020-01-30") + 1

И указывать непосредственно на поле формы / отчета. Сохраните ниже как сохраненный запрос и при необходимости вызовите его в VBA с помощью DoCmd.OpenQuery:

select * from bericht 
where fromtime = Forms!myForm!von 
  and b_date >= [Forms!myForm!l_date]
  and b_date < ([Forms!myForm!l_date] + 1)

Если вы используете запрос для сборок наборов записей, все еще используйте предпочтительный метод параметризации и использует сохраненный запрос и в VBA открывает его с помощью QueryDefs и связывает необходимые параметры во время выполнения:

SQL

parameters [myint] int, [mydate] date;
select * from bericht 
where fromtime = [myint] 
  and b_date >= [mydate]
  and b_date < ([mydate] + 1)

VBA

Dim qDef As QueryDef
Dim rst As Recordset

Set qdef = CurrentDb.QueryDefs("mySavedQuery")

qdef!myint = Me.von
qdef!myDate = Me.l_date

Set rst = qdef.OpenRecordset()

...
2 голосов
/ 31 января 2020

Потому что #1/30/2020# <> 1/30/2020 2:00:00 PM.

Перед сравнением преобразуйте столбец в дату, а не в дату и время.

... and DateValue(b_date) = #" & Me.l_date & "#"

Это вернет все строки с этой даты, которые соответствуют вашему другому условию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...