订阅具有不同默认参数的报表

时间:2017-05-15 11:29:31

标签: reporting-services ssrs-2008 ssrs-2012 ssrs-2014

我在VS2013中创建了一个报告。我还创建了一个Stored过程,它返回一个数据集,其中包含Last_week_start,Last_week_finish,Last_month_start,Last_month_finish等。我已经这样做了,因此用户可以订阅这些报告并在周一通过电子邮件发送给他们,每周一次和一次在月度报告的月份。我是否必须为具有不同默认参数的每周和每月报告创建单独的报告?即审计报告(每周)和审计报告(每月)并维护2份报告,或者是否有更有活力的方法来做到这一点

1 个答案:

答案 0 :(得分:0)

我处理报告的方式是我希望允许最终用户订阅,并且默认日期值取决于订阅是每日,每周还是每月,这是因为有一个额外的参数可以使可能。

我添加到报告中的参数是我称之为期间(或报告期间)的参数,它必须是报告中的第一个参数,或者至少在日期参数之前列出。此参数的下拉列表中的唯一值是每日,每周和每月(或适用的任何值)。这些可以是你需要的任何东西。在报告中的参数中手动输入这些值作为值选项,因为它们不会经常更改。根据最终用户在创建订阅时为此参数选择的内容,默认日期值会更改。这是通过日期参数的默认值中的表达式来完成的,该参数用于评估从“期间”下拉列表中选择的值。

因此,如果最终用户想要每日订阅,他们会从“期间”参数下拉列表中选择“每日”,并且开始日期和结束日期参数的默认值将更改为仅包括前一天。如果他们选择“每周”,则开始和结束日期参数将更改为仅包括前一周,依此类推。

以下是开始日期参数默认值表达式的示例。

=Switch(Parameters!Period.Value = "Daily" , DateAdd(DateInterval.Day, -1, Today), 
Parameters!Period.Value = "Weekly" , DateAdd(DateInterval.WeekOfYear, -1, DateAdd(DateInterval.Day, -(DatePart(DateInterval.Weekday, Today, 0, 0)-1), Today)) , 
Parameters!Period.Value = "Monthly" , DateAdd(DateInterval.Month, -1, DateAdd(DateInterval.Day, -(DatePart(DateInterval.Day, Today, 0, 0)-1), Today)))

对于结束日期参数...

=Switch(Parameters!Period.Value = "Daily" , Today, 
Parameters!Period.Value = "Weekly" , DateAdd(DateInterval.Day, -(DatePart(DateInterval.Weekday, Today, 0, 0)), Today) , 
Parameters!Period.Value = "Monthly" , DateAdd(DateInterval.Day, -(DatePart(DateInterval.Day, Today, 0, 0)), Today))

警告!在报表设计器(预览)或在线更改“期间”值不会导致日期值在您眼前自动更改。然而,它将在创建(并因此执行)订阅时。我从来没有调查过为什么会这样。

一个报告,基于参数的动态日期范围。

试一试。