筛选器的IN运算,在Microsoft的官网上没像样儿的例子,不好设置,很容易错
常见问题
在筛选器中,一个字段需要匹配多值时,值怎么设置?
1.错误用法
照着文档和想当然,逗号间隔了事,如图。这样的设置根本没作用,还导致查不到数据。
2.自以为是的正确用法
应该设置成
这样就OK了,能正确筛选数据了。但是,这是暂时的。
为什么这样说,问题出在未来对Tablix属性页的修改上,可以说是状况不断。事情是酱紫的。
按如上设置保存后,如果又想修改Tablix属性页上是的设置,就再次查看筛选器的设置,会发现筛选器的值已不是原来的样子了。
依然什么也不改,直接保存。此时,查报表已经没法匹配到数据了——坏掉了!再查查看筛选器的设置,会发现筛选器的值又变样儿了。
还是什么也不改,直接保存,出现报错了
什么玩意儿?我们所认为的“保存什么打开就是什么”常识在这里幻化出妖性了。
不知道为什么会这样,但可以肯定,这不是个好方法,必须找一个经得起反复保存考验的方法。
可靠方法
方法1:绑一个多值参数
(1)添加1个多值参数
(2)筛选器绑定到多值参数
方法2:演变表达式
如果不想专门加一个参数解决问题,那怎么设置IN运算呢?
答案是:不用IN运算,用“=”运算。那就需要将IN运算要表达的意思,用“=”运算表达出来。表达式本身就是很灵活的东西,这样不行,那样总行,思维可以放宽些。
其中,
表达式:=(InStr(",backup,restore,", "," & Fields!faction.Value & ",")>0)
运算符:=
值:=True
这种也不怕反复保存Tablix属性页,搞定!