我有日期时间或空白值的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类型数据类型而不是字符串,以防止出现在最低级别的数据。