Отключить «Выходные» в параметре типа даты SSRS - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть отчет, и в нем есть параметр (@date) для пользователя, чтобы выбрать дату.

В настоящее время мой параметр (@date) использует Свойства параметра> Значения по умолчанию> = Today () (Для установить сегодняшнюю дату как параметр по умолчанию).

Но я также хочу, чтобы параметр мог отключить выходные дни. Таким образом, пользователь может выбрать только день недели.

Как я могу это сделать? Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Вы не можете отключить выходные в окне выбора даты. Если пользователь выбирает дату выходного дня, и это не приведет к ошибке. Могу ли я предложить использовать видимость, чтобы скрыть ваши таблицы / матрицы на основе выбранной даты?

В свойствах ваших таблиц go для опции видимости таблицы и использовать это выражение:

=IIF(weekday(Parameters!YourParameterName.Value) = 1, TRUE,IIF(weekday(Parameters!YourParameterName.Value) = 7, TRUE, FALSE))

Добавьте текстовое поле после таблицы, добавьте в текстовое поле «сообщение об ошибке», чтобы пользователи могли выбрать дату выходного дня. Go для свойства textbox, параметра видимости и использования этого выражения:

=IIF(weekday(Parameters!YourParameterName.Value) = 1, FALSE, IIF(weekday(Parameters!YourParameterName.Value) = 7, FALSE, TRUE))

Я использую здесь вложенную функцию IIF, но при желании вы можете использовать SWITCH.

Результат Когда выбрана дата выходного дня, ваше текстовое поле будет отображаться с вашим сообщением. В противном случае ваши таблицы будут отображаться.

0 голосов
/ 14 февраля 2020

Если вы не возражаете против потери функциональности средства выбора даты, вы можете установить параметр @date для использования следующего запроса, в настоящее время установленного на +/- 60 дней от текущей даты, который вы можете изменить в соответствии со своими требованиями. :

;with dates ([startDate]) as (
Select convert(date,DateAdd("d",-60,(getdate()))) as [startDate] 
union all 
Select dateadd(day, 1, [startDate])
from dates
where [startDate] <= DateAdd("d",60,(getdate())))
select [startDate]
from dates
where datepart(dw,[startDate]) in (2,3,4,5,6)   
option (maxrecursion 32767)
...