2017-03-05 72 views
0

我在我的報表查看器表達式中需要一些幫助。 我在這種特定的情況下,我不知道我的價值的數據類型,因爲用戶從另一個地方選擇它。 但我需要知道,如果值是DateTime,或者它是Double。如果它是DateTime,我想寫LongDateFormat;如果是雙精度值,我想寫4個小數。 我正在寫這個表達式,並且它在我的Tablix中導致我成爲#Error而不是我的值。 iif( IsDate(Fields(First(Fields!Value.Value,"DataSet1")).Value) ,DateValue(Fields(First(Fields!Value.Value,"DataSet1")).Value).ToLongDateString() ,Round(Fields(First(Fields!Value.Value,"DataSet1")).Value,4) ) 儘管當我使用只有沒有所需的信息時,我會得到沒有#Error的結果。Report Viewer表達式,如何檢查值是DateTime還是double?

回答

0

使用IIf您必須記住雙方(TruePartFalsePart)總是被評估爲舍入一個日期或格式化一個double作爲長日期引發一個#Error。

您可以使用自定義代碼(右鍵單擊外報告>Report Properties > Code設計面)與If/Then/Else替換IIf

Public Function strFormatValue(objValue As Object) As String 

    If IsDate(objValue) Then 
     strFormatValue = CDate(objValue).ToLongDateString 
    Else 
     strFormatValue = Format(Round(CDbl(objValue), 4), "f4").ToString 
    End If 

End Function 

從你Tablix像這樣的表達式叫它:

=Code.strFormatValue(Fields!Value1.Value) 
+0

非常感謝,如果沒有你的幫助,我無法做到 –