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

Ada*_*mon 2 null date reporting-services

我有DiscontinuedDate列,其中包含日期时间或空白值.我用过表达式

FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate)
Run Code Online (Sandbox Code Playgroud)

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

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

=IIF(Fields!DiscontinuedDate.Value is "", "", FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate))
Run Code Online (Sandbox Code Playgroud)

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

谢谢,

亚当

Ian*_*ton 7

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

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

=IIF(Fields!DiscontinuedDate.Value = ""
    , ""
    , FormatDateTime(IIf(Fields!DiscontinuedDate.Value = ""
            , Nothing
            , Fields!DiscontinuedDate.Value)
        , DateFormat.ShortDate))
Run Code Online (Sandbox Code Playgroud)

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