【问题标题】:Report Viewer Expression, How to check if the value is DateTime or double?报表查看器表达式,如何检查值是 DateTime 还是 double?
【发布时间】:2017-03-05 13:47:56
【问题描述】:

我需要一些关于报表查看器表达式的帮助。 我处于这种特定情况,我不知道我的值的数据类型,因为用户从另一个地方选择它。 但我需要知道,该值是 DateTime 还是 Double。如果是 DateTime,我想写 LongDateFormat,如果是双精度,我想写 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) ) 虽然当我在没有所需信息的情况下使用 only if 时,我会得到没有 #Error 的结果。

【问题讨论】:

    标签: expression rdlc reportviewer iif


    【解决方案1】:

    使用IIf,您必须记住,双方(TruePartFalsePart)总是被评估,因此将日期舍入或将双精度格式设置为长日期会引发#Error。

    您可以使用自定义代码(右键单击报告外的设计表面> 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 使用如下表达式调用它:

    =Code.strFormatValue(Fields!Value1.Value)
    

    【讨论】:

    • 非常感谢,没有你的帮助我做不到
    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多