Поиск диапазона дат в запросе формы Microsoft Access 2013

#ms-access

#ms-access

Вопрос:

Я пытаюсь выполнить поиск в своей базе данных, используя форму, в которой пользователь может ввести дату начала и дату окончания и вернуть только эти результаты. Я пробовал все, что говорилось на этих форумах, но результаты, которые я получаю, — это все, КРОМЕ диапазона, который я хочу. Все эти данные опущены.

Я попытался переключить поля даты начала / окончания, но это не сработало.

Вот что у меня есть прямо сейчас, которое возвращает противоположные результаты:

 Like "*" amp; (([uut_result].[START_DATE_TIME]) Between [Forms]![TestFormResults]![StartDateTime] And [Forms]![TestFormResults]![EndDateTime]) amp; "*"
  

Ответ №1:

 WHERE (([uut_result].[START_DATE_TIME]) 
Between [Forms]![TestFormResults]![StartDateTime] 
And 
IIF([Forms]![TestFormResults]![EndDateTime] Is Null, Date(), [Forms]![TestFormResults]![EndDateTime])
  

Что IIF() делает, так это оценивает условие, которое было бы EndDateTime = Null . Если равно Null , иначе IsNull(EndDateTime) = True , то он возвращает значение, если true piece , которое будет сегодняшней датой. Если IsNull(EndDateTime) = False значение означает, что в этом элементе управления есть дата, оно вернет значение, если false, которое в данном случае равно [Forms]![TestFormResults]![EndDateTime] .

Это * подстановочный знак в SQL. Он используется для поиска вариантов комбинаций критериев поиска.

 SELECT [Fields]
FROM [Table]
WHERE ((YourDateField) BETWEEN #[First date]# AND #[Second date]#)
  

Предполагается, что имена ваших полей указаны правильно.
Эти # знаки относятся к жестко заданным датам. Для использования ссылок на элементы управления формами они не требуются (ваш синтаксис для дат в порядке.)

Комментарии:

1. У меня есть подстановочный знак, поскольку я использовал тот же формат для других полей со списком, где мне нужно все, что содержит, возможно, неполный ответ. Итак, для дат, если кто-то просто вводит начальную дату, я хочу, чтобы это возвращало все с этой даты до настоящего времени.

2. @user3783127 Это не то, что задал ваш вопрос.

3. Хорошо, да, я случайно пропустил эту часть.

4. @johnnyappleseed попробуйте мое решение для обновления. Пожалуйста, отразите свой актуальный вопрос в будущем.

5. Не могли бы вы вкратце объяснить внесенные вами изменения? Для меня это не имеет смысла