0

我有一个名为WLH的布尔参数,如果为True,那么它应该忽略所有内容,但如果为False,那么它应该显示为0,表示每行有文本框在它里面写着“LABORER”字样。这是我正在使用的表达,但它似乎没有做任何事情。我可以获得帮助吗?我究竟做错了什么?SSRS - 用字符串和布尔参数过滤整数

=IIF(Parameters!WLH.Value = false AND ReportItems!craft.Value LIKE "*laborer*", 0, ---main calculation for the else statement---) 

回答

0

我看到这个表达式需要更加注意的两件事。

  1. 参数WLH.Value = CBool​​函数(“假”):平等测试的假侧需要被转换成布尔类型与CBool​​函数(CONVER到布尔值)的功能。
  2. ReportItems!craft.Value.IndexOf(“laborer”)> = 0:SSRS在表达式中不支持LIKE,但我们可以用这种方式测试子串的存在。这样做是在字段值中查找索引(字符串“labourr”开始的位置)并检查大于0的值。这将意味着找到“劳工”,而正整数以外的值意味着没有找到字符串“labourr”。

我没有在这台机器上安装SSRS仔细检查,所以发表评论,如果你仍然需要帮助。另请注意,IndexOf区分大小写,如果您想与“Laborer”匹配,则必须在IndexOf之前进行大小写转换。

充分体现:

=IIF(Parameters!WLH.Value = CBool("false") AND ReportItems!craft.Value.IndexOf("laborer") >= 0, 0, ---main calculation for the else statement---) 

编辑:为了应对区分大小写 使用“用Ucase()”你的字段转换为大写字母,然后测试只针对“民工”。

=IIF(Parameters!WLH.Value = CBool("false") AND UCase(ReportItems!craft.Value).IndexOf("LABORER") >=0, 0, ---main calculation for the else statement---) 
+0

好吧,我不知道SSRS不像TSQL那样支持LIKE过滤器,但是你的新表达式看起来好像可以工作。然而,只有一个小问题。就像这个词用在什么情况下并不重要,但是用你的新表达方式,它可能无法一直工作,因为有时工艺可以是劳动者,劳动者或劳动者。索引中的案例是否真的必须准确?或者有没有办法让它查找所有3个变量? –