我有包含日期时间或空白值的 DiscontinuedDate 列。我用了表达方式
FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate)
要将日期时间显示为日期,但当值为空时,它显示为错误,并显示以下消息“从字符串“转换为类型“日期”无效。”
所以我一直在尝试使用如下所示的 IIF 表达式:
=IIF(Fields!DiscontinuedDate.Value is "", "", FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate))
我尝试了一些变体,但它们都返回相同的错误。有什么想法吗?
谢谢,
亚当
最佳答案
你的问题是 SSRS IIf
表达式不会短路,所以只要你有一个空白字符串,你的代码仍然会尝试 FormatDateTime
转换,所以你得到这个即使你的支票也有错误。
您可以添加一些逻辑来停止在 FormatDateTime
表达式中评估空字符串,方法是使用另一个 IIf
将其更改为 NULL值,不会失败:
=IIF(Fields!DiscontinuedDate.Value = ""
, ""
, FormatDateTime(IIf(Fields!DiscontinuedDate.Value = ""
, Nothing
, Fields!DiscontinuedDate.Value)
, DateFormat.ShortDate))
这解决了您的直接问题,但假设底层数据是基于文本的,我还建议查看您的底层数据并使用显式 DateTime 类型数据类型而不是字符串,以在尽可能低的级别防止这些数据。
关于date - 在 SSRS 中显示空白值 ("") 作为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18915970/