【发布时间】:2009-04-07 17:28:19
【问题描述】:
我在 Reporting Services 2005 中有一个报表,我想根据报表参数隐藏或显示单个表格列。有谁知道如何做到这一点?
谢谢!
【问题讨论】:
标签: sql-server-2005 reporting-services parameters
我在 Reporting Services 2005 中有一个报表,我想根据报表参数隐藏或显示单个表格列。有谁知道如何做到这一点?
谢谢!
【问题讨论】:
标签: sql-server-2005 reporting-services parameters
使用列的可见性属性。这对我有用。
=iif(Parameters!ParameterName.Value = "TextValueOfTheParameter",False,True)
【讨论】:
将列的可见性设置为将返回真或假的表达式。例如,可以在 TextBox 的 Visibility 选项卡中找到此属性。
单击表达式的单选选项,然后您的表达式可能看起来像
=Parameters!ShowColumn.Value
【讨论】:
提示:如果表达式返回“False”,则列或行将可见。如果表达式返回“True”,则表达式将被隐藏。起初这欺骗了我。
【讨论】:
假设我的报告(SSRS 2005)有 5 列。我想根据用户选择的参数(所有 5 个列名的多选)显示/隐藏列。如下操作
1)创建一个字符串类型的参数(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)
第三栏
=iif(instr(Join(Parameters!ColumnVisibility.Value,","),"**03**")>0,false,true)
等等。对于 SSRS 2008,当您右键单击该列时,您可以看到“列可见性”选项。将代码粘贴到每列的“根据表达式显示或隐藏”部分。
【讨论】:
对于我的一些报告,我已将 列 的可见性(特别是 Hidden 属性)设置为:
=IsNothing(Fields!Site.Value)
请注意,这仅适用于基础数据集中相关字段可以为空的情况,否则您将看到空白列。
【讨论】:
如果您想隐藏整列,当报表中该特定列根本没有数据时,您可以在列可见性/表达式中使用以下代码:
=IIF(IsNothing (Sum(Fields!columnA.Value, "ReportA")),False,True)
【讨论】:
当我执行上述操作时,我可以使该列消失,但它会在我的表格中留下一个空白。这是预期的结果吗。我希望这些列也会转移。我正在尝试为一组添加一列,然后为下一组显示它。
【讨论】:
要使空列消失,
右键单击列以选择列可见性,然后为隐藏设置表达式:
IIF(IsNothing(Fields!FieldName.Value),True,False)
【讨论】: