Подскажите параметр отдельных значений даты и времени?

9

Я работаю с 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правило для получения данных, которые я ищу? Есть ли другой способ сделать это? Может быть подотчет?

YetAnotherRandomUser
источник
1
Это может быть слишком поздно, так как этому Q уже неделя. Я бы переписал его как пример ввода, требуемый вывод и вашу лучшую попытку решения (я знаю, что как разработчик CR вы полагаетесь на множество встроенных виджетов, что делает публикацию более сложной). Но я не могу представить, какую проблему вы пытаетесь решить. Если вы скажете: «Я получаю 2017-05-12.00: 00: 00Z, но хочу 2017-05-12.23: 59: 59», то я думаю, что многим людям будет легче помочь. Удачи.
Оболочка
1
Простое решение, возможно, состоит в том, чтобы создать представление базы данных в MS SQL, указывающее на другую таблицу, в которую отчет получает данные, но скажите, чтобы она получала только те значения, которые здесь [час] HHнаходится между 14:00 и 22:00, используя DATEPARTфункцию. Например, без явного использования столбца SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22в представлении, а затем укажите select expertотчет, чтобы получить из него данные за выбранные периоды дат. Другой способ - сделать тот же запрос T-SQL командой CR SQL, но представление SQL может работать намного лучше.
Сок Pimp IT
1
Таким образом, для ясности запроса SQL, с которым вы, возможно, захотите поиграть, как с объектом SQL VIEW, так и с объектом CR SQL Command, SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22вы можете быть специфичны для столбца с запросом в представлении SQL, и select column1, column2 FROM ~т.д. вместо *.
Сок Pimp IT
1
Мой пример был конкретным примером. Я хочу позволить пользователю определить время начала и окончания, поэтому я упомянул параметры. Я не очень разбираюсь в представлениях SQL, но я предполагаю, что если я вставлю куда-нибудь что-то подобное, оно будет статически установлено, и пользователь, запустивший отчет, не сможет изменить его на лету. Я посмотрю, как сделать вопрос более ясным в этом отношении.
Ещё один случайный пользователь
Хорошо, это не сработает, если пользователи выберут временной диапазон. Это может быть работа для хранимого процесса, возможно. У меня больше нет CR, и прошел год или около того с тех пор, как я проверил его, чтобы протестировать что-либо, но я подумал, что смогу помочь с потенциальным решением на уровне SQL, предполагая, что вы можете настроить часть CR и настроить ее так, чтобы TSQL мог выполнять фильтрация и т. д. Не уверен, что вы могли бы создать сохраненный процесс и передать параметры времени начала и окончания и иметь динамическое приглашение CR для этих значений и т. д., но я подумал, что по крайней мере дам вам некоторые идеи ... Удачи несмотря на.
Сок Pimp IT