我在Report Viewer Expression中需要一些帮助。
我正处于这种情况,我不知道我的值的数据类型,因为用户从其他地方选择它。
但我需要知道,如果值是DateTime,或者它是Double。如果它是DateTime我想写LongDateFormat,如果它是double,我想写4个小数。
我正在写这个表达式,它导致我的#Error而不是我的Tablix中的值。
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)
)
虽然当我使用if而没有所需的信息时,我会得到没有#Error的结果。
答案 0 :(得分:0)
使用IIf
你必须记住,对{(1}}和TruePart
}的所有方都进行评估,以便将日期四舍五入或将双重格式化为长日期引发#Error。< / p>
您可以使用自定义代码(右键单击设计表面外部报告&gt; FalsePart
)并将Report Properties > Code
替换为IIf
:
If/Then/Else
并使用以下表达式从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