参考SSRS中的ReportItem属性

时间:2015-03-10 10:27:18

标签: reporting-services ssrs-2008

在SSRS报告表达式中,有没有办法引用ReportItem的“隐藏”属性?

更具体地说:我的SSRS报告包含一个摘要,其子报告包含详细信息。如果它隐藏了,我希望能够停止子报表的运行,就像在this问题中一样。该问题的答案建议根据参数更改查询,但我的问题是如何设置该参数。实际上,我只需要参数为1或0;

,只要它为0,查询就不会返回任何内容

我希望能够使用文本框作为ToggleItem显示或隐藏子报表,并将表达式作为参数值,如下所示:

  

= iif(ReportItems!SubReport1.Hidden = False,1,0)

......或者这个:

  

= iif(ReportItems(“SubReport1”)。隐藏= 0,1,0)

...但是“Hidden”属性也没有出现。

我探索过的其他选择:

  1. 放入一个不可见的文本框,并按照this MSDN article在参数表达式中使用其值。然后问题就变成了如何设置文本框的值。
  2. 使用变量;同样的问题适用(实际上我甚至不确定你如何在SSRS中使用变量,或者即使你可以)。
  3. 将子报告保存为单独的报告,并链接到该报告;有点不优雅,并且意味着当用户想要查看详细信息时丢失其他报告内容。
  4. 广泛的谷歌搜索;返回很多方法来设置“隐藏”属性,但无法引用它。
  5. 建议,道德支持,建设性批评和赤裸裸的虐待都非常感激。

2 个答案:

答案 0 :(得分:0)

您在上面链接的问题显示了如何使用报表参数来控制子报表的可见性和执行。但这与使用文本框等报表项不同。

听起来你正在寻找的是按需执行子报告,我担心这是不可能的。报告首次显示时,报告呈现仅发生一次,除非您更改参数并再次运行它。

我担心按需执行详细报告的唯一选择是使用“钻取”设计。这意味着报表上的文本框用作详细报表的链接,而不是用作子报表的详细报表。

SSRS 2008 R2 Drill Down On-Demand to Sub Report

答案 1 :(得分:0)

正如答案here所述,您无法阻止隐藏项目的运行。如果您不希望在呈现主报表时运行子报表,则需要使用此变量运行主报表,以防止它首先运行。

为此,通过使用参数而不是文本框切换来简单隐藏或显示此子报表是有意义的。您可以使用以下命令在子报表上引用此参数的值:

可见性 - > “基于表达式显示或隐藏” - > F(X)

IIF(Parameters!ToggleSub.Value = 1, true, false)

问题是,如果你包含一个文本框来切换此时的可见性,那么唯一的方法就是传回一个参数并刷新报告。一旦选择不渲染子报表,它将仅在刷新整个报表时呈现。

我希望这可以帮助你。