我看到这个表达式需要更加注意的两件事。
- 参数WLH.Value = CBool函数(“假”):平等测试的假侧需要被转换成布尔类型与CBool函数(CONVER到布尔值)的功能。
- 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---)
好吧,我不知道SSRS不像TSQL那样支持LIKE过滤器,但是你的新表达式看起来好像可以工作。然而,只有一个小问题。就像这个词用在什么情况下并不重要,但是用你的新表达方式,它可能无法一直工作,因为有时工艺可以是劳动者,劳动者或劳动者。索引中的案例是否真的必须准确?或者有没有办法让它查找所有3个变量? –