Я работаю с Crystal Reports 2016. Источник данных - MS SQL Server 2008 R2. В настоящее время я могу запросить у пользователя диапазон дат для моего отчета, используя параметр. Я также хотел бы добавить подсказку для временного диапазона. Использование подсказки для параметра DateTime не делает то, что я хочу. Диапазон дат будет выбирать большее окно дней, а диапазон времени будет выбирать, в какое время в течение дня в отчете будут отображаться данные. Использование приглашения параметра DateTime просто добавляет точность к начальному и конечному дню / времени отчета и не выполняет то, что я хочу. Обе подсказки будут ссылаться на одну и ту же запись DateTime в базе данных.
Я попытался добавить отдельную, вторую подсказку для параметра на это время, но это имеет тот же результат, что и изменение подсказки параметра на значение DateTime. Я повторю: это не мой желаемый результат.
В качестве конкретного, конкретного примера я хотел бы использовать данные, которые действительны для 1 сентября - 31 октября, когда то, о чем я сообщаю, произошло между 14:00 и 22:00 по восточному поясному времени в любой или все эти дни. Если у меня есть выбор DateTime, я могу выбрать 1 сентября, 14:00 и 31 октября, 22:00. Однако это не то, что я пытаюсь выбрать.
В основном, выберите данные, которые произошли в эти дни между 14:00 и 22:00. Где дата начала и дата окончания могут быть выбраны; и время начала и время окончания выбираются.
Используя язык SQL, я думаю, что мне нужно внутреннее соединение диапазона дат и диапазона времени (центральное):
Совершенно несвязанный, но похожий пример; это явление похоже на встречи в Outlook. Вы можете (но не должны) проводить действительно длительное собрание, которое начинается 1 день / время и заканчивается в другой день / время несколько дней спустя, но вам следует проводить повторяющееся совещание, чтобы правильно управлять расписанием своего и своего помещения. Я ищу отобранные записи аналогично повторяющейся встрече.
Как я могу создать select expert
правило для получения данных, которые я ищу? Есть ли другой способ сделать это? Может быть подотчет?
HH
находится между 14:00 и 22:00, используя DATEPART
функцию. Например, без явного использования столбца SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
в представлении, а затем укажите select expert
отчет, чтобы получить из него данные за выбранные периоды дат. Другой способ - сделать тот же запрос T-SQL командой CR SQL, но представление SQL может работать намного лучше.
SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
вы можете быть специфичны для столбца с запросом в представлении SQL, и select column1, column2 FROM ~
т.д. вместо *
.