3

我正在使用 SSRS 2008R2 创建报告。数据源是来自 web 服务的 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 语句?如果是这样,如果没有数据,我怎样才能使它短路并且不转换行?

4

2 回答 2

1

尝试以下操作:

=IIF
(
    Fields!DateOfReg.Value= "",
    "",
    Datevalue(Cstr(Fields!DateOfReg.Value))
)
于 2013-02-05T12:45:58.450 回答
1

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

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

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

于 2013-02-06T13:51:31.593 回答