如何抑制 s-s-rS 2008 中的空子报表

Posted

技术标签:

【中文标题】如何抑制 s-s-rS 2008 中的空子报表【英文标题】:How to supress empty subreports in s-s-rS 2008 【发布时间】:2010-11-03 15:05:57 【问题描述】:

我正在 s-s-rS 2008 中创建一个“主”报告,该报告与有关某个人的其他报告协作。有时并非所有其他报告都是相关的,因此不会返回任何内容。我希望能够从主报告中排除它,这样它就不会留下空白页。

我知道“无行消息”功能,但只有“不适用于此人”的整个页面并不是最好的解决方案!

基本上我正在寻找一种方法来确定子报表是否为“空”并将其用于可见性表达式。

非常感谢任何帮助

【问题讨论】:

【参考方案1】:

好的,所以我现在想通了。答案是将子报表放入一个矩形中。然后将矩形的可见性设置为:

=IIF(First(Fields![SOMEFEILD].Value, "[SOMEDATASET]") IS NOTHING, TRUE, FALSE)

其中[SOMEDATASET] 是一个数据集,其填充方式与填充子报表的方式相同。那么如果子报表为空,那么[SOMEDATASET] 也将为空,更重要的是,字段[SOMEFEILD] 将等于NOTHING

八大兵!一份没有浪费纸张的空白页的报告。

注意:这种方法有一个不好的副作用,即 SQL 服务器将发送两次相同的信息,一次填充子报表的数据集,另一次填充报表中的重复数据集。对我来说,这是可以接受的,其他人可能想知道这一点。

【讨论】:

干得好。 (缓冲区满足 15 个字符的限制) 在午休期间仔细考虑过这个问题后,我决定两次返回完全相同的数据永远不会是一个好主意。我将编写一个存储过程,它只返回用于填充子报表的存储过程的行数。然后测试这些计数是否为 0,并相应地设置相应子报表的可见性。 感谢您的想法,如果子报表不返回任何内容,我需要将 tablix 报表中的一个单元格灰显。所以我只是将一个子报表放入一个矩形并将矩形的背景颜色设置为灰色。我什至不必使用表达式,因为如果子报表不返回任何内容,s-s-rS 默认不返回任何内容。我打印报告时遇到的唯一问题是它没有显示打印的灰色单元格或 PDF(但确实在屏幕上显示),所以我只是将子报告的 No rows text 设置为 =CHR(32) 并且它成功了.感谢您的想法! 这个解决方案对我不起作用,因为实际报告的第一个不是空的。我的 tablix 正在使用组功能,并且只有组中的某些对象具有我需要显示的报告中的数据。一切看起来都不错,是为没有来自该报告的数据的组值生成了一个空白页。当所选组的数据为空时,如何隐藏子报表?我尝试了“组可见性”选项,但仍然导出 (PDF) 一个空白页。【参考方案2】:

此解决方案按预期对我有用,消除了指向子报告的超链接。在您指定子报表名称的部分的“操作”菜单中:

=iif(fields!SomfieldName.Value <> Nothing, "YourSubReportName",Nothing)

简单易行的解决方案!

【讨论】:

以上是关于如何抑制 s-s-rS 2008 中的空子报表的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖s-s-rS中的参数默认值?

在 s-s-rS 中,如何将父报表项的值与子组中的报表项进行比较?

在 s-s-rS 中访问报表正文中的页码

s-s-rS 2008:如何在不使用向导的情况下定义 Table/Tablix 样式?

子报告中的 s-s-rS 2008 交互式排序未按预期工作

如何禁用 s-s-rS 2008 管理器