我有日期时间或空白值的DiscontinuedDate列。我用了表达

FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate)


若要将日期时间仅显示为日期,但当该值为空白时,它将显示为错误,并显示以下消息“从字符串“”转换为类型“ Date”无效。”

所以我一直在尝试使用如下所示的IIF表达式:

=IIF(Fields!DiscontinuedDate.Value is "", "", FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate))


我尝试了一些变体,但它们都带来了相同的错误。有任何想法吗?

谢谢,

亚当

最佳答案

您的问题是SSRS IIf表达式不会短路,因此,每当您有空白字符串时,您的代码仍将尝试进行FormatDateTime转换,因此即使进行检查,也会出现此错误。

您可以添加一些逻辑,以通过使用另一个FormatDateTime将其更改为NULL值来停止在IIf表达式中评估的空字符串,这不会失败:

=IIF(Fields!DiscontinuedDate.Value = ""
    , ""
    , FormatDateTime(IIf(Fields!DiscontinuedDate.Value = ""
            , Nothing
            , Fields!DiscontinuedDate.Value)
        , DateFormat.ShortDate))


这就解决了您的眼前问题,但是假设基础数据是基于文本的,我还建议您查看基础数据,并使用显式的DateTime类型数据类型而不是字符串,以防止出现在最低级别的数据。

09-25 19:59