2013-05-06 40 views
2

我正在SSRS中創建報告。我的數據集查詢返回給我多個輸出,並在每個新行新記錄中的報告中顯示它們。如何檢查值是否爲數字在SSRS

這是查詢。現在我想檢查返回值是否是數字。這是我的表達。

=Join(LookupSet(Fields!QuestionId.Value, Fields!QuestionID.Value, 
Fields!ScalarValue.Value, "myResponse"), Constants.VbCrLf) 

我試圖在IIF(isnumeric ...)上工作,但是它返回了多個結果,它不允許我格式化。如果輸出是數字,我想格式化這兩個2位小數。

回答

3

IsNumeric在這裏很有用,但IIf的問題是不會短路,所以如果您正在投射數據,您可能會遇到錯誤。

例如,如果您使用CDec來允許將數字格式應用於字符串,則它將應用於所有情況並在字符串不是數字時引發錯誤。

一個安全的方法是創建一個簡單的自定義代碼函數來處理格式,並在LookupSet表達式中使用該函數。

因此,一些自定義的代碼添加到類似的報告:

Public Function FormattedString(ByVal st as String) as String 

    If IsNumeric(st) 

     Return Format(CDec(st), "N2") 

    End If 

    Return st 

End Function 

,改變你的表達式中使用這個新的FormattedString功能:

=Join(LookupSet(Fields!QuestionId.Value, Fields!QuestionID.Value, 
Code.FormattedString(Fields!ScalarValue.Value), "myResponse"), Constants.VbCrLf) 

我對以下數據進行測試:

enter image description here

簡單的ta BLE上述表達式看起來需要:

enter image description here

所以它的工作對我來說對數據的混合 - 您可以根據需要更改自定義代碼格式化邏輯。

+1

非常感謝:)這就像一個魅力..我真的很感謝你的幫助。 – Moiz 2013-05-07 05:52:25

+0

不客氣,很高興幫助。 – 2013-05-07 10:59:03