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

时间:2011-06-08 13:45:52

标签: reporting-services

我有一个计算列的小计字段,我希望在我的报告尚未运行时隐藏该字段,因为在报告中显示为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)

我做错了什么?

7 个答案:

答案 0 :(得分: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 显示针对数据的示例报告执行。

  10. 希望有所帮助。

    屏幕截图#1:

    1

    屏幕截图#2:

    2

    屏幕截图#3:

    3

    屏幕截图#4:

    4

    屏幕截图#5:

    5

    屏幕截图#6:

    6

答案 1 :(得分:14)

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

应替换为

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

因为可见性表达式设置了隐藏值。

答案 2 :(得分:13)

这不起作用

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

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

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

猜测SSRS不喜欢平等比较,也不喜欢低于。

答案 3 :(得分:6)

而不是

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

当你想隐藏时只写表达式

CountRows("ScannerStatisticsData")=0

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

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

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

" Set expression for: Hidden " 

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

根据以下示例,如果内部条件满足,则文本框隐藏功能将为True否则如果条件失败则文本框隐藏功能将为False

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

答案 6 :(得分:0)

rdl文件内容:

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

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