【问题标题】:SSRS 2012 - Hide table row containing a subreport with no dataSSRS 2012 - 隐藏包含没有数据的子报表的表行
【发布时间】:2018-09-20 12:03:18
【问题描述】:

我有一个包含两行的详细信息分组表。顶行是几个包含数据详细信息的单元格,底行是合并到一个单元格的所有列,并且该单元格包含一个子报表。该子报表有一个参数,即顶行中一个单元格的值。我需要的是,当子报表没有任何数据可显示特定值时,该行根本不显示。现在,它在其顶部详细信息行和下一个详细信息行之间显示为空白行。我可以让它显示“No Rows”消息,但我不希望这样,我只是希望它不占用任何空间,即详细信息行后面将紧跟下一个详细信息行。我找到了几个类似的答案:How to supress empty subreports in SSRS 2008,但正如我所说,我不需要有 No Rows 消息。提前致谢

【问题讨论】:

  • 你能用屏幕截图展示它现在的样子以及你想要的结果吗?

标签: reporting-services grouping ssrs-2012


【解决方案1】:

我“认为”您可以做到这一点的唯一方法是从主报告中查询数据,如果没有返回任何行,则隐藏该行。如果子报表是一个简单的查询,那么这应该没问题,但如果它是一个长时间运行的查询,那么这将有效地加倍执行时间。

您没有提供关于子报表内容的任何线索,但如果是主报表行中显示的发票的发票行,那么您可以修改您的主数据集以包含记录的计数将出现在子报表中并使用该值来控制行的可见性。

如果这没有意义,请编辑您的问题并发布您想要实现的目标的屏幕截图和/或发布您从主报告和子报告中获得的数据样本。

【讨论】:

  • 可以通过在主报表中使用隐藏参数 (@rowcount) 来绕过子报表的运行。根据行数将其值设置为 1 或 0。如果行数 >1,则为 1,否则为 0。现在将其传递给子报表。子报表数据集应将其包含在 where 子句中。类似于 where 1= @行数。因此,如果没有行.. 那么它将是 1=0 并且什么都不会发生.. 否则 1 = 1 并且查询将运行。好吧..反正就是这样..
  • 这基本上就是我所说的 Harry,但由于 OP 没有发布更多信息,因此很难给出明确的答案。
【解决方案2】:

对我有用的一种简单方法如下:

选择将包含子报表的行。将CanGrowCanShrink 属性设置为true。将子报表插入该行。在 SubReport Properties > Visibility > Show or hide... 并添加以下表达式:

=IIF(RowNumber(Nothing)>0,False,True)

然后再次选择该行并使用手柄使该行尽可能小或尽可能小。当您运行主报告时,如果它返回记录,子报告将出现,否则该行将是空白的,并且高度将是您在上面使用句柄设置的高度。

【讨论】:

    猜你喜欢
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多