【问题标题】:How do I set the visibility of a text box in SSRS using an expression?如何使用表达式在 SSRS 中设置文本框的可见性?
【发布时间】:2011-09-10 21:41:38
【问题描述】:

我有一个计算列的小计字段,我想在我的报告尚未运行时隐藏它,因为在没有数据的日子里,它在报告上显示为 NaN

我尝试了两种方法,但都没有奏效,我相信它几乎是正确的。我只是不知道表达式有什么问题。

如果我的数据集没有行,我会尝试隐藏。

=IIf((CountRows("ScannerStatisticsData")=0),False,True)

我也试过计算

=iif((fields!Scans.Value / fields!numberOfCases.Value) = 0, False, True)

我还尝试在计算中的一列上检查 isnothing

=iif(IsNothing(fields!Scans.Value), False, True)

我做错了什么?

【问题讨论】:

    标签: reporting-services


    【解决方案1】:

    我尝试了您提供的示例,唯一的区别是您切换了 True 和 False 值,正如@bdparrish 所指出的那样。这是一个根据数据集中存在的行数使 SSRS Texbox 可见或隐藏的工作示例。此示例使用 SSRS 2008 R2

    分步流程: SSRS 2008 R2

    1. 在本例中,报表有一个名为 Items 的数据集,并有一个显示行数的文本框。它还有另一个文本框,仅当数据集 Items 有行时才可见。

    2. 右键单击应基于表达式可见/隐藏的文本框,然后选择 Text Box Properties...。请参阅屏幕截图 #1

    3. Text Box Properties 对话框中,单击左侧部分的Visibility。请参阅屏幕截图 #2

    4. 选择Show or hide based on an epxression

    5. 点击表达式按钮fx

    6. 输入表达式 =IIf(CountRows("Items") = 0 , True, False)。请注意,此表达式用于隐藏文本框(隐藏)。

    7. 单击“确定”两次关闭对话框。

    8. 屏幕截图 #3 显示 SQL Server 表 dbo.Items 中的数据,该表是报表数据集 Items 的来源。该表包含 3 行。屏幕截图 #4 显示了针对数据执行的示例报告。

    9. 屏幕截图 #5 显示 SQL Server 表 dbo.Items 中的数据,该表是报表数据集 Items 的来源。该表没有数据。屏幕截图 #6 显示了针对数据执行的示例报告。

    希望对您有所帮助。

    屏幕截图 #1:

    屏幕截图 #2:

    截图#3:

    屏幕截图 #4:

    屏幕截图 #5:

    屏幕截图 #6:

    【讨论】:

    • 第 6 步的 +1:我已经在这里完成了所有操作,但没有意识到表达的是是否隐藏文本框。
    • 我收到以下错误:- 错误 1 ​​[rsInvalidAggregateScope] 文本框“Textbox14”的隐藏表达式具有对聚合函数无效的范围参数。 scope 参数必须设置为字符串常量,该常量等于包含组的名称、包含数据区域的名称或数据集的名称。
    【解决方案2】:
    =IIf((CountRows("ScannerStatisticsData")=0),False,True)
    

    应该换成

    =IIf((CountRows("ScannerStatisticsData")=0),True,False)
    

    因为 Visibility 表达式设置了 Hidden 值。

    【讨论】:

      【解决方案3】:

      这没用

      =IIf((CountRows("ScannerStatisticsData") = 0),False,True)
      

      但确实如此,我无法解释原因

      =IIf((CountRows("ScannerStatisticsData") < 1),False,True)
      

      猜测 SSRS 不喜欢相等的比较,就像小于一样。

      【讨论】:

      • 如果该字段的数据类型类似于float,它可能永远不会完全为零。如果您使用浮动:现在停止。
      【解决方案4】:

      而不是这个

      =IIf((CountRows("ScannerStatisticsData")=0),False,True)
      

      当你想隐藏时只写表达式

      CountRows("ScannerStatisticsData")=0
      

      或者如下改变真假位置的顺序

      =IIf((CountRows("ScannerStatisticsData")=0),True,False)
      

      因为可见性表达式设置了隐藏值。您可以在文本区域上方找到

      " Set expression for: Hidden " 
      

      【讨论】:

        【解决方案5】:

        切换你的 false 和 true 回报?我想如果你把它们作为一个函数放在可见区域中,那么 false 会显示它,而 true 不会显示它。

        【讨论】:

          【解决方案6】:

          文本框的可见性取决于隐藏值

          根据下面的示例,如果内部条件满足,则文本框隐藏功能将为真,否则如果条件失败,则文本框隐藏功能将为假

          =IIf((CountRows("ScannerStatisticsData") = 0), True, False)
          

          【讨论】:

            【解决方案7】:

            Twood,可见性表达式是您编写的关于您希望“可见性”如何表现的表达式。所以,如果你想隐藏或显示文本框,你想这样写:

            =IIf((CountRows("ScannerStatisticsData")=0),True,False)
            

            这意味着,如果数据集为 0,则要隐藏文本框。

            【讨论】:

              【解决方案8】:

              rdl文件内容:

              <Visibility><Hidden>=Parameters!casetype.Value=300</Hidden></Visibility>
              

              如果您的表达式为真,文本框将隐藏。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2019-10-04
                • 2017-07-28
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-11-22
                • 1970-01-01
                相关资源
                最近更新 更多