我的数据源是XML(共享点列表)。我基本上想要显示日期格式化,如果字段中的值是一个日期,如果没有那么显示“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;#","")
)
答案 0 :(得分: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))