代码之家  ›  专栏  ›  技术社区  ›  Kyle Hale

Reporting Services:用链接报表中的表达式重写默认参数

  •  3
  • Kyle Hale  · 技术社区  · 15 年前

    所以我在SSR2005中有一个“每日仪表盘”报告。它有一个参数@pdate,默认为“=now”。

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

    我假设这是行尾,我只需要部署一份Daily Dashboard报表的副本,默认为@pdate(昨天),但我想我会在这里发布,看看是否有人有一些漂亮的快捷方式来完成这项工作,而不必维护两个RDL。

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

    如果默认值接受值,则 不能键入常量或语法 数据处理有效 与报表一起使用的扩展名。

    “数据处理扩展”显然转换为SQL Server,所以我尝试了有效的singleton选择,这些选择不是常量(getdate(),“04/27/”+year(getdate())等),但仍然是空的。

    2 回复  |  直到 10 年前
        1
  •  1
  •   Kyle Hale    15 年前

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

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

        2
  •  0
  •   Ed Harper    15 年前

    我没有测试过这个,但是你可以尝试在报表中添加第二个参数(没有默认值-调用它 pDateOverride 为了参数),然后更改 pDate 如果新值存在,则为使用新值的表达式,否则为now()。 类似:

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

    然后你可以设置 PDATE覆盖 调用报表生成昨天的最终仪表板时。