#sql-server #sql-server-2008 #stored-procedures #reporting-services #ssrs-2008
#sql-сервер #sql-server-2008 #хранимые процедуры #службы reporting-services #ssrs-2008
Вопрос:
Я хотел бы определить 2 параметра в службах reporting services
- для выбора даты между 2 датами (в идеале, 2 календарями)
- чтобы выбрать время, у меня есть 3 необходимых диапазона (08:00:00-15:59:59, 16:00:00-23:59:59, 00:00:00-07:59:59) В идеале 3 кнопки.
Есть идеи?
Ответ №1:
Я бы использовал три параметра:
- FromDate с запросом «From:», тип DateTime.
- Завершать с запросом типа DateTime «кому:».
- Изменение времени с запросом «Times:» Тип Int с тремя жестко заданными параметрами:
Возможное значение для TimeRange:
Value Label
1 0 - 8
2 8 - 16
3 16 - 0
Обратите внимание, что вы можете установить метки на любые, которые помогут вашим пользователям: «Ранняя смена (с полуночи до 8 утра)»
Затем в вашем SQL введите параметр TimeRange в качестве int и преобразуйте его в два параметра для вашего SQL.
DECLARE @StartHour INT
DECLARE @EndHour INT
SET @StartHour = CASE @TimeRange WHEN 1 THEN 0
WHEN 2 THEN 8
WHEN 3 THEN 16
END
SET @EndHour = CASE @TimeRange WHEN 1 THEN 8
WHEN 2 THEN 16
WHEN 3 THEN 24
END
SELECT
*
FROM
LogEntries
WHERE
LogEntries.TimeOfEntry >= @FromDate
AND LogEntries.TimeOfEntry < @ToDate
AND DATEPART( hh , LogEntries.TimeOfEntry ) >= @StartHour
AND DATEPART( hh , LogEntries.TimeOfEntry ) < @EndHour
(Не используйте BETWEEN, если вы используете мой точный код, он не будет соответствующим образом обрабатывать время окончания.)