SSRS篩選器的IN運算(即包含於)用法
- 2022 年 7 月 4 日
- 筆記
- Reprot Builder 3.0, SSRS
篩選器的IN運算,在Microsoft的官網上沒像樣兒的例子,不好設置,很容易錯

常見問題
在篩選器中,一個欄位需要匹配多值時,值怎麼設置?
1.錯誤用法
照著文檔和想當然,逗號間隔了事,如圖。這樣的設置根本沒作用,還導致查不到數據。

2.自以為是的正確用法
應該設置成

這樣就OK了,能正確篩選數據了。但是,這是暫時的。
為什麼這樣說,問題出在未來對Tablix屬性頁的修改上,可以說是狀況不斷。事情是醬紫的。
按如上設置保存後,如果又想修改Tablix屬性頁上是的設置,就再次查看篩選器的設置,會發現篩選器的值已不是原來的樣子了。

依然什麼也不改,直接保存。此時,查報表已經沒法匹配到數據了——壞掉了!再查查看篩選器的設置,會發現篩選器的值又變樣兒了。

還是什麼也不改,直接保存,出現報錯了

什麼玩意兒?我們所認為的「保存什麼打開就是什麼」常識在這裡幻化出妖性了。
不知道為什麼會這樣,但可以肯定,這不是個好方法,必須找一個經得起反覆保存考驗的方法。
可靠方法
方法1:綁一個多值參數
(1)添加1個多值參數

(2)篩選器綁定到多值參數

方法2:演變表達式
如果不想專門加一個參數解決問題,那怎麼設置IN運算呢?
答案是:不用IN運算,用「=」運算。那就需要將IN運算要表達的意思,用「=」運算表達出來。表達式本身就是很靈活的東西,這樣不行,那樣總行,思維可以放寬些。

其中,
表達式:=(InStr(“,backup,restore,”, “,” & Fields!faction.Value & “,”)>0)
運算符:=
值:=True
這種也不怕反覆保存Tablix屬性頁,搞定!