2012-07-12 63 views
0

我正在創建一個報告,我需要將彗星分隔的字符串拆分爲表的三列。Report Builder .rdl檢查數組鍵是否存在

string = 'some text, some text, some text' 

但蜇並不總是有兩個昏迷的即

string = 'some text, some text' 

所以當我試圖獲得的價值將第三列

=Split(Fields!GLDescription.Value, ", ").GetValue(2) 

可能導致此代碼該列中的「#Error」消息。我試圖通過檢查長度來解決這個問題,就像這樣

=IIF(Split(Fields!GLDescription.Value, ", ").Length >= 3, Split(Fields!GLDescription.Value, ", ").GetValue(2), "") 

但它仍然導致相同的錯誤。無論如何檢查數組鍵是否存在?

回答

1

正如您所見,問題在於SSRS IIf表達式不擅長短路。我可以考慮一個解決方法,它適用於2列和3列字段。

試着像一個表達式:

=IIf(
    Split(Fields!GLDescription.Value, ", ").Length = 3 
    , Mid(
     Fields!GLDescription.Value 
     , InStrRev(Fields!GLDescription.Value, ", ") + 2 
     , Len(Fields!GLDescription.Value) - InStrRev(Fields!GLDescription.Value, ", ") + 2 
    ) 
    , "No val 3" 
) 

隨着數據集:

enter image description here

給出了結果:

enter image description here

這不是防彈的所有可能的情況,但可能足夠 爲您的數據。