【问题标题】:Reporting Services: Overriding a default parameter with an expression in a linked reportReporting Services:使用链接报表中的表达式覆盖默认参数
【发布时间】:2009-04-07 20:33:44
【问题描述】:

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

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

我假设这已经结束了,我只需要使用昨天的默认 @pDate 部署每日仪表板报告的副本,但我想我会在这里发布,看看是否有人有一些漂亮的快捷方式无需维护两个 RDL 即可完成此操作。

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我还没有对此进行测试,但是您可以尝试在报告中添加第二个参数(没有默认值 - 将其称为 pDateOverride 以进行论证),然后将 pDate 的默认值更改为如果存在则使用新值的表达式,否则为 Now()。 比如:

      =Iif(IsEmpty(Parameters!pDateOverride.Value),Now(),Parameters!pDateOverride.Value)
      

      然后您可以在调用报告时设置pDateOverride 以生成昨天的最终仪表板。

      【讨论】:

      • 嘿,总的来说,这是一个非常好的想法,但它再次提出了最初的问题:如何以编程方式将 pDateOverride 设置为昨天的日期。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      相关资源
      最近更新 更多