IIF和CDate在SSRS表达式中获得#error?

时间:2016-04-07 15:30:57

标签: sql reporting-services sql-server-2012

我从Reporting Services中获取数据,其中包含日期时间,如下所示:20160511,但在某些情况下它只是0.我需要一个表达式来执行以下操作:如果值为0,把字符串“never”,否则将数据放入正确的格式。 我试图在SSRS报告中使用一个表达式,如下所示:

==IIF(Fields!name.Value=0,"never", Cdate(...))

如果数据正确,工作正常,并显示日期,但在字段中,其中0,我收到此错误:#error和一些警告。

如果我只是用这个:

==IIF(Fields!name.Value=0,"never", "something else")

这是真正的分支,它正确地显示了never和其他字符串。我已经尝试了第一个代码wth是什么日期和其他,但它没有奏效。

我真的很困惑。有没有人知道修复第一个代码?

2 个答案:

答案 0 :(得分:0)

您应该能够在CDATE中放入另一个IIF以消除错误:

=IIF(Fields!name.Value = 0,"never", Cdate(IIF(Fields!name.Value=0, "2000-01-01", Fields!Date.Value)) )

答案 1 :(得分:0)

将日期转换为varchar格式,您的公式将按预期工作。您可以使用格式 功能。对于例如如果你想要以mm / dd / yyyy输出,那么你的表达式将如下所示,

==IIF(Fields!name.Value=0,"never", Format(Fields!Date.Value,"MM/dd/yyyy"))

我希望这会有所帮助。干杯!