篩選器的IN運算,在Microsoft的官網上沒像樣兒的例子,不好設定,很容易錯
常見問題
在篩選器中,一個欄位需要匹配多值時,值怎麼設定?
1.錯誤用法
照著檔案和想當然,逗號間隔了事,如圖。這樣的設定根本沒作用,還導致查不到資料。
2.自以為是的正確用法
應該設定成
這樣就OK了,能正確篩選資料了。但是,這是暫時的。
為什麼這樣說,問題出在未來對Tablix屬性頁的修改上,可以說是狀況不斷。事情是醬紫的。
按如上設定儲存後,如果又想修改Tablix屬性頁上是的設定,就再次檢視篩選器的設定,會發現篩選器的值已不是原來的樣子了。
依然什麼也不改,直接儲存。此時,查報表已經沒法匹配到資料了——壞掉了!再查檢視篩選器的設定,會發現篩選器的值又變樣兒了。
還是什麼也不改,直接儲存,出現報錯了
什麼玩意兒?我們所認為的「儲存什麼開啟就是什麼」常識在這裡幻化出妖性了。
不知道為什麼會這樣,但可以肯定,這不是個好方法,必須找一個經得起反覆儲存考驗的方法。
可靠方法
方法1:綁一個多值引數
(1)新增1個多值引數
(2)篩選器繫結到多值引數
方法2:演變表示式
如果不想專門加一個引數解決問題,那怎麼設定IN運算呢?
答案是:不用IN運算,用「=」運算。那就需要將IN運算要表達的意思,用「=」運算表達出來。表示式本身就是很靈活的東西,這樣不行,那樣總行,思維可以放寬些。
其中,
表示式:=(InStr(",backup,restore,", "," & Fields!faction.Value & ",")>0)
運運算元:=
值:=True
這種也不怕反覆儲存Tablix屬性頁,搞定!