2017-01-25 20 views
0

我有SSRS2012中的參數內的這段代碼有問題。IIF構造不解決正確的方式(SSRS)

=IIF(InStr(Parameters!P1.Value,"@")=0, 
"missing @", 
Left(Parameters!P1.Value(InStr(Parameters!P1.Value,"@")-1))) 

我的目的是檢查參數P1包含一個「@」如果沒有,我會打印「失蹤@」,否則我想從該參數的「@」(「後有什麼刪除@ 「inculded)。

例如:
P1 = 123456 - >打印 「缺失@」
P1 = 123 @ 56 - >打印123

的問題是,SSRS滴錯誤:「參數 '長度' 必須大於或等於零「當我插入一個沒有」@「的值。 (當我用「@」插入一個值時,它一切順利)

看起來IIF首先解析了2個表達式(而不是一個是真或假),然後它給了你正確的基於第一個條件的評估。

尋求一些幫助。謝謝!

+0

的可能的複製[請問IIF函數計算在SSRS兩條路徑或者是短路?(http://stackoverflow.com/問題/ 1204179/does-the-iif函數計算雙路徑ssrs或is is it短路) – SearchAndResQ

+0

不是重複的,嘗試了開關功能,它是一樣的 –

+0

難道是這樣嗎?該參數只包含'@'符號而沒有其他內容? –

回答

1

這是一個奇怪的錯誤,這裏是一個解決方案

=replace(replace(IIF(InStr(Fields!P1.Value,"@")<> 0, 
left(Fields!P1.Value,InStr(Fields!P1.Value,"@")),"missing"),"@",""),"missing","missing @") 
+0

這個實際工作,謝謝隊友 –