报告上的SSRS预设或自定义日期选择

时间:2018-05-25 15:36:59

标签: date reporting-services

我目前有一份能够选择开始日期和结束日期的报告。我很好奇你是否可以同时设置预设和自定义选项

选择:

本周,或 上周,或 自定义日期范围。

谢谢,

1 个答案:

答案 0 :(得分:1)

看看cascading parameters

上面的链接似乎更侧重于从查询中获取级联参数值,但您可能不希望这样做日期 - 据我所知,为日期参数设置可用值会限制您到日期的下拉列表,而不是通常更容易使用的日历。关于级联参数如何工作仍然是一个很好的背景。

要使用默认开始/结束日期的表达式执行此操作,您基本上希望第一个参数可以在"当前周","上周"和&之间进行选择。 #34;自定义日期范围"。您可以向用户显示这些标签,但值可以是您想要的任何值 - 对于我的测试,我只使用了1,2和3。

first parameter

然后,您将再设置2个参数,一个用于开始日期,另一个用于结束日期。确保数据类型为Date。您将需要根据第一个参数的值为这些设置默认值。我会用一个表达式来执行此操作,例如下面的表达式作为开始日期。您可能还需要稍微修改一下,具体取决于您定义周的方式 - 是"当前周"只是前7天,或者是最新的星期一到今天,还是其他什么等等。

=Switch(
    Parameters!FirstParam.Value = 1, DateAdd("d", -7, Today()),
    Parameters!FirstParam.Value = 2, DateAdd("d", -14, Today())
)

在这种情况下,您甚至不需要考虑第3个选项,因为如果用户想要自定义日期范围,那么您不希望使用任何默认值填写开始日期和结束日期。您还需要一个类似的默认结束日期表达式。

由于您希望用户能够输入自定义范围(如果他们要选择第三个选项),您不希望填写开始/结束日期参数的可用值,因为用户会无法选择任何日期(至少据我所知 - 如果有解决方法,我很乐意看到它,因为这将是我想自己使用的东西)。

这种方法的一个可能的缺点是,如果用户首先选择当前周,然后将他们的想法改为上周,则开始/结束日期将不会更改为上周。您可以阅读更多关于这种情况发生的原因here,但实质上是:因为选择当前周后已经填写的值仍然有效(它们是日期,这是这些参数的唯一标准,因为没有可用的值是设置),更改选择后它们不会刷新。对此的修复是定义可用值,但如上所述,这将阻止用户输入自定义日期范围。