我的列DiscontinuedDate包含日期时间或空白值。我用了表达式
FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate)
要将日期时间显示为日期,但是当该值为空时,它会显示为错误,并显示以下消息“从字符串转换”“到类型'日期'无效。”
所以我一直在尝试使用如下所示的IIF表达式:
=IIF(Fields!DiscontinuedDate.Value is "", "", FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate))
我尝试了一些变化,但它们都带回了同样的错误。有什么想法吗?
谢谢,
亚当
答案 0 :(得分:7)
您的问题是SSRS IIf
表达式没有短路,所以每当您有一个空白字符串时,您的代码仍然会尝试FormatDateTime
转换,因此即使您的支票也会出现此错误。
您可以添加一些逻辑来停止在FormatDateTime
表达式中评估的空字符串,方法是使用另一个IIf
将其更改为 NULL 值,这不会失败:
=IIF(Fields!DiscontinuedDate.Value = ""
, ""
, FormatDateTime(IIf(Fields!DiscontinuedDate.Value = ""
, Nothing
, Fields!DiscontinuedDate.Value)
, DateFormat.ShortDate))
这解决了您的直接问题,但假设基础数据是基于文本的,我还建议您查看基础数据并使用显式DateTime类型数据类型而不是字符串来防止这些数据处于最低级别。