2

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

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

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

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

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

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

谢谢,

亚当

4

1 回答 1

7

您的问题是 SSRSIIf表达式不会短路,因此只要您有一个空白字符串,您的代码仍会尝试FormatDateTime转换,因此即使您检查也会出现此错误。

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

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

这解决了您的直接问题,但假设基础数据是基于文本的,我还建议查看您的基础数据并使用显式 DateTime 类型数据类型而不是字符串来防止这些在可能的最低级别。

于 2013-09-20T11:59:52.233 回答