Reporting Services - 根据报告参数隐藏表列

时间:2009-04-07 17:28:20

标签: sql-server-2005 reporting-services parameters

我在Reporting Services 2005中有一个报表,我想基于报表参数隐藏或显示单个表列。有谁知道怎么做?

谢谢!

8 个答案:

答案 0 :(得分:10)

使用列的visibility属性。这对我有用。

=iif(Parameters!ParameterName.Value = "TextValueOfTheParameter",False,True)

答案 1 :(得分:7)

将列的可见性设置为将返回true或false的表达式。例如,可以在TextBox的“可见性”选项卡中找到此属性。

单击Expression的单选选项,然后表达式可能如

=Parameters!ShowColumn.Value

答案 2 :(得分:3)

提示:如果表达式返回“False”,则列或行将可见。如果表达式返回“True”,则表达式将被隐藏。这首先让我抓狂。

答案 3 :(得分:2)

对于我的部分报告,我已将的可见性(特别是隐藏属性)设置为:

=IsNothing(Fields!Site.Value)

请注意,这只适用于基础数据集中相关字段为空的情况,否则您将看到空白列。

答案 4 :(得分:2)

假设我的报告(SSRS 2005)有5列。并且我想基于用户选择的参数(具有所有5个列名称的多选)来显示/隐藏列。做如下

1)创建一个string类型的参数(ColumnVisibility是我的参数的名称),5列的标签中有所需的列名, INT 号(01,02,03,04,05)分别在参数向导的“可用值”部分的值中。

2)然后转到设计栏属性。转到“可见性”并粘贴以下

=iif(instr(Join(Parameters!ColumnVisibility.Value,","),"01")>0,false,true) 

3)通过将int值增加1来对所有列重复相同的操作。例如,参见

第二栏

=iif(instr(Join(Parameters!ColumnVisibility.Value,","),"**02**")>0,false,true)

第3栏

=iif(instr(Join(Parameters!ColumnVisibility.Value,","),"**03**")>0,false,true)

等等。对于SSRS 2008,当您右键单击该列时,您可以看到“列可见性”选项。将代码粘贴到每列的“显示或隐藏基于表达式”部分。

答案 5 :(得分:1)

如果要隐藏整列,当报表中的特定列根本没有数据时,您可以在列可见性/表达式中使用以下代码:

=IIF(IsNothing (Sum(Fields!columnA.Value, "ReportA")),False,True)

答案 6 :(得分:0)

当我如上所述时,我可以让列消失,但它在我的表中留下了空白。这是预期的结果吗?我希望这些专栏也会转移。我正在尝试为一个组隐藏一个列,然后将其显示给下一个组。

答案 7 :(得分:0)

要使空列消失,

右键单击列以选择“列可见性”,然后选择“将表达式设置为隐藏:

IIF(IsNothing(Fields!FieldName.Value),True,False)