3

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

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

我假设这是该行的结尾,我只需要使用昨天的默认@pDate 部署每日仪表板报告的副本,但我想我会在这里发布,看看是否有人有一些漂亮的捷径来完成这个无需维护两个 RDL。

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

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

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

4

2 回答 2

1

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

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

于 2009-04-15T20:39:02.310 回答
0

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

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

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

于 2009-04-09T08:03:06.603 回答