0

我有一個名爲WLH的布爾參數,如果爲True,那麼它應該忽略所有內容,但如果爲False,那麼它應該顯示爲0,表示每行有文本框在它裏面寫着「LABORER」字樣。這是我正在使用的表達,但它似乎沒有做任何事情。我可以獲得幫助嗎?我究竟做錯了什麼?SSRS - 用字符串和布爾參數過濾整數

=IIF(Parameters!WLH.Value = false AND ReportItems!craft.Value LIKE "*laborer*", 0, ---main calculation for the else statement---) 

回答

0

我看到這個表達式需要更加註意的兩件事。

  1. 參數WLH.Value = CBool​​函數(「假」):平等測試的假側需要被轉換成布爾類型與CBool​​函數(CONVER到布爾值)的功能。
  2. ReportItems!craft.Value.IndexOf(「laborer」)> = 0:SSRS在表達式中不支持LIKE,但我們可以用這種方式測試子串的存在。這樣做是在字段值中查找索引(字符串「labourr」開始的位置)並檢查大於0的值。這將意味着找到「勞工」,而正整數以外的值意味着沒有找到字符串「labourr」。

我沒有在這臺機器上安裝SSRS仔細檢查,所以發表評論,如果你仍然需要幫助。另請注意,IndexOf區分大小寫,如果您想與「Laborer」匹配,則必須在IndexOf之前進行大小寫轉換。

充分體現:

=IIF(Parameters!WLH.Value = CBool("false") AND ReportItems!craft.Value.IndexOf("laborer") >= 0, 0, ---main calculation for the else statement---) 

編輯:爲了應對區分大小寫 使用「用Ucase()」你的字段轉換爲大寫字母,然後測試只針對「民工」。

=IIF(Parameters!WLH.Value = CBool("false") AND UCase(ReportItems!craft.Value).IndexOf("LABORER") >=0, 0, ---main calculation for the else statement---) 
+0

好吧,我不知道SSRS不像TSQL那樣支持LIKE過濾器,但是你的新表達式看起來好像可以工作。然而,只有一個小問題。就像這個詞用在什麼情況下並不重要,但是用你的新表達方式,它可能無法一直工作,因爲有時工藝可以是勞動者,勞動者或勞動者。索引中的案例是否真的必須準確?或者有沒有辦法讓它查找所有3個變量? –