【问题标题】:Reporting Services - hide table column based upon report parameterReporting Services - 根据报表参数隐藏表格列
【发布时间】:2009-04-07 17:28:19
【问题描述】:

我在 Reporting Services 2005 中有一个报表,我想根据报表参数隐藏或显示单个表格列。有谁知道如何做到这一点?

谢谢!

【问题讨论】:

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


    【解决方案1】:

    使用列的可见性属性。这对我有用。

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

    【讨论】:

      【解决方案2】:

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

      单击表达式的单选选项,然后您的表达式可能看起来像

      =Parameters!ShowColumn.Value
      

      【讨论】:

      • 谢谢 Josh,我实际上将使用 Hidden 属性(可见性的子属性 [至少在 vs 2005 中])作为列。
      【解决方案3】:

      提示:如果表达式返回“False”,则列或行将可见。如果表达式返回“True”,则表达式将被隐藏。起初这欺骗了我。

      【讨论】:

        【解决方案4】:

        假设我的报告(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,当您右键单击该列时,您可以看到“列可见性”选项。将代码粘贴到每列的“根据表达式显示或隐藏”部分。

        【讨论】:

          【解决方案5】:

          对于我的一些报告,我已将 的可见性(特别是 Hidden 属性)设置为:

          =IsNothing(Fields!Site.Value)
          

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

            • 这里的“ReportA”是什么?数据集?
            【解决方案7】:

            当我执行上述操作时,我可以使该列消失,但它会在我的表格中留下一个空白。这是预期的结果吗。我希望这些列也会转移。我正在尝试为一组添加一列,然后为下一组显示它。

            【讨论】:

              【解决方案8】:

              要使空列消失,

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

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

              【讨论】:

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