在SSRS中显示空白值(“”)作为日期

时间:2013-09-20 11:44:31

标签: date reporting-services null

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

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

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

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

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

我尝试了一些变化,但它们都带回了同样的错误。有什么想法吗?

谢谢,

亚当

1 个答案:

答案 0 :(得分:7)

您的问题是SSRS IIf表达式没有短路,所以每当您有一个空白字符串时,您的代码仍然会尝试FormatDateTime转换,因此即使您的支票也会出现此错误。

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

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

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