如何在SSRS 2008中压制空子报表

Bri*_*ian 7 visibility subreport reporting-services ssrs-2008

我正在SSRS 2008中创建一个"主"报告,该报告与其他人的报告进行协作.有时并非所有其他报告都是相关的,因此没有任何回报.我希望能够从主报告中排除这一点,因此它不会留下空白页面.

我知道'no-rows-message'功能,但整个页面只是"不适合这个人"并不是最好的解决方案!

基本上我正在寻找一种方法来确定子报表是否为"空"并在可见性表达式中使用它.

任何帮助都非常感谢

Bri*_*ian 13

好的,所以我现在得到了这个数字.答案是将子报表放在一个矩形中.然后将矩形的可见性设置为如下所示:

=IIF(First(Fields![SOMEFEILD].Value, "[SOMEDATASET]") IS NOTHING, TRUE, FALSE)
Run Code Online (Sandbox Code Playgroud)

哪里[SOMEDATASET]是填充以同样的方式作为一个填充报表的数据集.然后,如果子报表为空,那么[SOMEDATASET]也将为空,并且更多的点,该字段[SOMEFEILD]将等于NOTHING.

巴达冰!一份报告没有纸张浪费的空白页面.

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

  • 在午休期间思考问题之后,我决定两次返回完全相同的数据是*永远不是一个好主意.我将编写一个存储过程,它只返回用于填充子报表的存储过程的行数.然后测试以查看这些计数是否为0,并相应地设置相应子报表的可见性. (3认同)
  • 感谢这个想法,如果子报告没有返回任何内容,我需要在tablix报告中灰显一个单元格.所以我只是将一个子报告放入一个矩形中,并将矩形的背景颜色设置为灰色.我甚至不必使用表达式,因为如果子报表没有返回任何内容,默认情况下SSRS不会返回任何内容.我打印报告时唯一的问题是它没有显示灰色单元格打印或PDF格式(但确实在屏幕上显示),所以我只为子报告设置No rows text to = CHR(32)并且它完成了技巧.谢谢你的想法! (2认同)