Reporting Services:使用链接报表中的表达式覆盖默认参数

时间:2009-04-07 20:33:45

标签: reporting-services linked-list parameter-passing default reportingservices-2005

所以我在SSRS 2005中有一个“每日仪表板”报告。它有一个参数@pDate,默认为“= Now”。

我想在链接的报告中使用相同的报告来显示昨天的最终仪表板(然后通过订阅邮寄出来),并用另一个表达式覆盖参数default,“= dateadd(d,-1,现在)。”但是当我更改默认参数时,我得到数据不匹配错误(natch)。

我假设这是行的结束,我只需要使用昨天的默认@pDate部署每日仪表板报告的副本,但我想我会在这里发帖,看看是否有人有一些漂亮的捷径无需维护两个RDL即可实现此目的。

更新:我在MSDN上找到了这个:

  

如果默认值接受某个值,则为您   可以键入常量或语法   对数据处理有效   与报告一起使用的扩展名。

“数据处理扩展”显然转换为SQL服务器,所以我尝试了非常量的有效单例选择(GETDATE(),“04/27 /”+ YEAR(GETDATE())等等)和仍然没有。

2 个答案:

答案 0 :(得分:1)

所以我发现了我的问题:如果主报表中的子报表使用主报表中的直通参数,确保子报表中的所有参数都使用相同的数据类型。我的两个子报表使用了@pDate字段的String数据类型而不是DateTime,因此订阅失败(尽管由于某种原因报告的实时版本容忍这种不一致。)

我现在正在使用数据驱动订阅动态设置@pDate,一切似乎都运行正常。

答案 1 :(得分:0)

我没有对此进行测试,但您可以尝试在报告中添加第二个参数(没有默认值 - 为了参数而调用它pDateOverride),然后更改{{1的默认值如果它存在则使用新值的表达式,否则为Now()。 类似的东西:

pDate

然后,您可以在调用报告时设置=Iif(IsEmpty(Parameters!pDateOverride.Value),Now(),Parameters!pDateOverride.Value) 以生成昨天的最终仪表板。