2012-10-12 50 views
1

我想筛选我的参数,当我选择一个多选列表框时选择一条记录。如果某人没有选择记录,则默认选择“未选定”选项。问题是:在SSRS中筛选

=IIF(
    InStr(Join(Parameters!ProvinceID.Value,”,”),0), 
    True, 
    IIF(
     InStr(Join(Parameters!ProvinceID.Value,”,”), 
       Fields!ProvinceID.Value 
     )<>0, 
     True, 
    False) 
) 

结果不会允许正确的过滤器。

回答

0
InStr(Join(Parameters!ProvinceID.Value,”,”),0) 

难道不应该0为 “0”

0

尝试:

=IIf(
     InStr(Join(Parameters!ProvinceID.Value, ", "), "0") > 0 
     ,True 
     ,IIf(
       InStr(Join(Parameters!ProvinceID.Value, ", "), Fields!ProvinceID.Value) > 0, 
       ,True 
       ,False 
      ) 
    ) 

InStr将返回在字符串搜索开始的位置的整数值(如果找到)。因此,您的布尔测试(IIf()函数的第一个参数)需要确定是否返回了等于或大于1的数字。

  • 当你正在寻找一个字符串,则0所搜索的字符串中必须被编码为"0"

=IIf(
     InStr(Join(Parameters!ProvinceID.Value, ", "), "0") > 0 
     ,True 
     ,IIf(
       InStr(Join(Parameters!ProvinceID.Value, ", "), CStr(Fields!ProvinceID.Value)) > 0, 
       ,True 
       ,False 
      ) 
    ) 
0

什么是你比较:

  • 如果Fields!ProvinceID.Value返回一个整数,那么也必须使用CStr()功能像这样转换为字符串?通常IIF需要类似= IIF(Fields!ListBox1.Value =“value”,“option1”,“option2”)

    = IIF(Fields!Eyes.Value =“Green”,“Green”,“Other颜色“)