2011-08-18 75 views
1

我的数据源是XML(共享点列表)。我基本上想显示日期格式,如果该字段中的值是一个日期,如果不是,则显示“NA”。出于某种原因,即使数据是字符串,它仍然试图将其转换为某处的日期。这里是我的代码..SSRS错误:从字符串“字符串; #NA”转换为键入“日期”无效

=IIF 
(
ISDATE(replace(First(Fields!ows_Manufacturing_Date.Value, "DataSet1"),"datetime;#","")), 
formatdatetime(replace(First(Fields!ows_Manufacturing_Date.Value, "DataSet1"),"datetime;#",""),2), 
replace(First(Fields!ows_Manufacturing_Date.Value, "DataSet1"),"string;#","") 
) 

回答

2

的问题是,在SSRS的IIF语句不短路,它总是会评估条件,因此即使该字段不是一个日期,它仍试图做的formatdatetime函数。

(见本:SSRS iif function question

取而代之的IIF功能,请尝试使用SWITCH函数:

=SWITCH(First(Fields!ows_Manufacturing_Date.Value, "DataSet1")="string;#NA", 
"NA", 
First(Fields!ows_Manufacturing_Date.Value, "DataSet1")<>"string;#NA", 
formatdatetime(replace(First(Fields!ows_Manufacturing_Date.Value, "DataSet1"),"datetime;#",""),2)) 
+0

花了我3小时后重理解为什么FORMATDATETIME仍然执行时,如果条件如果假直到我找到你的帖子 – ZERO

相关问题