在IIF表达式中将字符串转换为DateTime

时间:2013-02-05 12:10:59

标签: reporting-services ssrs-2008 reporting ssrs-2008-r2

我正在使用SSRS 2008R2来创建报告。数据源是来自webservice的xml响应。如果没有数据,我想返回空字符串,但如果有数据行,我想将其转换为另一种日期时间格式。

我正在使用像这样的IIF结构:

=IIF
(
    LEN(Fields!DateOfReg.Value) <= 0,
    "",
    FORMAT(CDATE(DateTime.ParseExact(Fields!DateOfReg.Value,"M/d/yyyy hh:mm:ss tt",
    System.Globalization.CultureInfo.InvariantCulture)), "dd.MM.yyyy HH:mm:ss")
)

如果没有数据,它会在文本框和输出中显示 #Error

  

字符串未被识别为有效的DateTime

这是否意味着IIF构造计算TRUE和FALSE语句?如果是这样,如果没有数据,如何使其短路并且不转换行?

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

=IIF
(
    Fields!DateOfReg.Value= "",
    "",
    Datevalue(Cstr(Fields!DateOfReg.Value))
)

答案 1 :(得分:0)

是的,你是对的 - IIF计算两个陈述。但是你可以使用IIF将空字符串转换为“Nothing”,然后尝试格式化,如下所示:

Format(IIF(Fields!DateOfReg.Value = "", Nothing, Fields!DateOfReg.Value), "yyyy/MM/dd")

如果传递空字符串,则格式函数会导致异常,但如果传递“Nothing”,则返回空字符串。