您正在使用数据集作为日期参数的默认值和值,这可能不是最好的方法。
我处理希望允许最终用户订阅的报告的方式是,根据订阅是每天、每周还是每月,默认日期值会有所不同,这是有一个额外的参数来实现这一点可能的。
我添加到报告中的参数是一个我称之为期间(或报告期间)的参数,它必须是报告中的第一个参数,或者至少列在日期参数之前。此参数下拉列表中的唯一值是 Daily、Weekly 和 Monthly(如果适用)。这些可以是你需要的任何东西。在报告中的参数中手动输入这些作为值选项,因为它们不会经常更改。根据最终用户在创建订阅时为此参数选择的内容,默认日期值会发生变化。这是通过日期参数的默认值中的表达式来完成的,该表达式评估从“期间”下拉列表中选择的值。
因此,如果最终用户想要每日订阅,他们可以从“期间”参数下拉菜单中选择“每日”,并且开始和结束日期参数的默认值会更改为仅包括前一天。如果他们选择每周,开始和结束日期参数将更改为仅包括前一周,依此类推。
这是开始日期参数默认值表达式的示例。
=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))
警告!!在报表设计器(预览版)或在线更改期间值不会导致日期值在您眼前自动更改。但是,它会在创建(并因此执行)订阅时。我从来没有调查过为什么会这样。我还有其他不那么痛苦的事情来打发时间。
试试这个。