【发布时间】:2017-12-06 10:22:26
【问题描述】:
我在 SSRS 中构建了两个报表:一个主报表和一个子报表。子报表嵌入在主报表中。子报表有几个参数:开始日期、结束日期等。
然后我尝试运行主报告并收到错误消息,指出无法显示子报告。我搜索了这个错误,发现传递给子报表的参数类型应该与子报表接受的参数类型匹配。
考虑到这一点,我检查了十几次传递给子报表的参数类型。没有运气。
【问题讨论】:
标签: reporting-services ssrs-2012
我在 SSRS 中构建了两个报表:一个主报表和一个子报表。子报表嵌入在主报表中。子报表有几个参数:开始日期、结束日期等。
然后我尝试运行主报告并收到错误消息,指出无法显示子报告。我搜索了这个错误,发现传递给子报表的参数类型应该与子报表接受的参数类型匹配。
考虑到这一点,我检查了十几次传递给子报表的参数类型。没有运气。
【问题讨论】:
标签: reporting-services ssrs-2012
我回答了我自己的问题,因为我最终想通了这一点,但没有从谷歌找到解决方案。我也认为其他人可能有同样的问题。
这个问题就像类型问题的一个特例。虽然传递给子报表的数据类型应与子报表采用的参数类型相匹配,但当您尝试传递类型 DATETIME 时情况会发生变化。
假设您的主报告采用一些 DATETIME 类型参数(在我的情况下,我的主报告采用开始日期和结束日期,这两个都是 DATETIME 类型参数)。当您调用也采用 DATETIME 参数的子报表时,您需要将 DATETIME 类型更改为 TEXT 类型(在 SSRS 的上下文中)或字符串。保持 DATETIME 类型会导致不显示子报表的错误。
我认为这可能是由于应在子报表中接受的 DATETIME 类型在幕后隐式转换为 TEXT 类型。
更新(2017 年 12 月 5 日):我应该更清楚一点:通过更改数据类型,我并不是说您应该更改参数的类型,但您应该考虑在传递时在表达式中使用 Format 函数将此 DATETIME 类型参数添加到子报表中,以便此参数将被格式化为字符串。
【讨论】: