报表查看器表达式,如何检查值是DateTime还是double?

时间:2017-03-05 13:47:57

标签: expression rdlc reportviewer iif

我在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的结果。

1 个答案:

答案 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