2012-02-08 121 views
1

我已經爲SSRS和Im編寫了一份報告,其中使用了帶有表達式的數據集篩選器來過濾報告信息。我似乎要麼這個表達錯誤或過濾器工作不正常:SSRS報告 - 數據集篩選器

=IIf(Parameters!DoctorID.Value = "All" Or Parameters!DoctorID.Value = "", "*", Parameters!DoctorID.Value) 

我想用上面的代碼來完成的,如果DoctorID = ALL或「」(空白),那麼我想從忽略它過濾器,以便我爲所有醫生返回信息。但是,無論何時DoctorID的值爲ALL,我都沒有返回任何行。應該是這樣,我得到所有行,因爲DoctorID不是一個具體的數字。

「*」(星號)不表示省略該過濾器嗎?我在這裏做錯了什麼?

謝謝!

回答

0

您提供的過濾器公式只有等式的一半:運算符是什麼,您將這與哪個進行比較?是的,我沒有看到SSRS使用星號作爲通配符。

考慮將您的過濾器放入數據集的查詢中。 SQL WHERE子句可以變得非常強大。我會寫你的過濾器到查詢中,因爲

... 
WHERE 
    @DoctorID = 'All' OR @DoctorID = '' 
    OR @DoctorID = myTable.DoctorID 

這也可以讓你移動到一個多值參數很容易。

+0

感謝您的回覆。我實際上使用了你的答案的變體來解決我的問題。 WHERE(@DoctorID ='All'和1 = 1)或者(doctor_id = @DoctorID)似乎有訣竅。 – Encryption 2012-02-09 14:48:14