SSRS - 使用字符串和布尔参数过滤整数

时间:2017-03-01 00:51:10

标签: visual-studio visual-studio-2012 reporting-services expression ssrs-2012

我有一个名为WLH的布尔参数,其中如果为True,那么它应该忽略所有内容但是如果为False则应该为其中包含单词“LABORER”的每个工艺文本框显示0。这是我正在使用的表达式,但它似乎没有做任何事情。我可以获得帮助吗?我做错了什么?

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

1 个答案:

答案 0 :(得分:0)

我在这个表达中看到的两件事需要更加关注。

  1. 参数!WLH.Value = CBool​​(“false”):需要使用CBool​​(转换为布尔值)函数将相等测试的错误一面转换为布尔类型。
  2. ReportItems!craft.Value.IndexOf(“laborer”)> = 0 :SSRS不支持表达式中的LIKE,但我们可以用这种方式测试子字符串的存在性。这样做是在字段值中查找索引(字符串“laborer”开始)并检查大于0的值。这意味着找到“laborer”,而正整数以外的值表示找不到字符串“laborer”。
  3. 我没有在此机器上安装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()”将您的字段转换为大写字母,然后仅针对“LABORER”进行测试。

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