如何使用表达式在SSRS中设置文本框的可见性?

TWo*_*ood 36 reporting-services

我有一个计算列的小计字段,当我的报告尚未运行时,我要隐藏该字段,因为在报告中没有显示数据的NaN日期.

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

如果我的数据集没有行,我试图隐藏.

=IIf((CountRows("ScannerStatisticsData")=0),False,True)
Run Code Online (Sandbox Code Playgroud)

我也尝试过计算

=iif((fields!Scans.Value / fields!numberOfCases.Value) = 0, False, True)
Run Code Online (Sandbox Code Playgroud)

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

=iif(IsNothing(fields!Scans.Value), False, True)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

小智 62

我尝试了您提供的示例,唯一的区别是您已按@bdparrish指出切换了True和False值.下面是根据数据集中存在的行数使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:

1

截图#2:

2

截图#3:

3

截图#4:

4

截图#5:

五

截图#6:

6

  • 步骤6的+1:我在这里做了一切,但没有意识到表达是否隐藏文本框. (2认同)

小智 14

=IIf((CountRows("ScannerStatisticsData")=0),False,True)
Run Code Online (Sandbox Code Playgroud)

应该换成

=IIf((CountRows("ScannerStatisticsData")=0),True,False)
Run Code Online (Sandbox Code Playgroud)

因为Visibility表达式设置了隐藏值.


TWo*_*ood 13

这没用

=IIf((CountRows("ScannerStatisticsData") = 0),False,True)
Run Code Online (Sandbox Code Playgroud)

但这样做了,我无法解释原因

=IIf((CountRows("ScannerStatisticsData") < 1),False,True)
Run Code Online (Sandbox Code Playgroud)

猜测SSRS不喜欢平等比较,也不喜欢.


小智 7

而不是这个

=IIf((CountRows("ScannerStatisticsData")=0),False,True)
Run Code Online (Sandbox Code Playgroud)

当你想隐藏时只写表达式

CountRows("ScannerStatisticsData")=0
Run Code Online (Sandbox Code Playgroud)

或更改真假位置的顺序如下

=IIf((CountRows("ScannerStatisticsData")=0),True,False)
Run Code Online (Sandbox Code Playgroud)

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

" Set expression for: Hidden " 
Run Code Online (Sandbox Code Playgroud)