2009-01-16 28 views
3

我在SSRS 2008中有一个报告,它使用Web服务作为其数据源之一。返回的XML的基本外观为SSRS无法有条件地过滤来自XML数据源的“无”值?

<table> 
    <row> 
     <column1>data</column1> 
     <column2 xsi:nil="true" /> 
     <column3>data</column3> 
    </row> 
</table> 

带有“nil”属性的任何标签在报告上都显示为空白。我想用短划线替换任何空白。由于它是一个数字字段,零在报表中有意义,所以我不能简单地将Web服务更改为返回零或空字符串。我试图做几种条件比较交换它们,但它们都在报告中显示为“#Error”:

=iff(Field!column2.Value Is Nothing, "-", Field!column2.Value) 
=iff(IsNothing(Field!column2.Value), "-", Field!column2.Value) 
=iff(Field!column2.Value = "", "-", Field!column2.Value) 
=iff(CStr(Field!column2.Value) = "", "-", Field!column2.Value) 

任何想法?

编辑:这不是空的检查失败,它是第一个IIF内的嵌套条件。一旦删除,我能够使其工作。

回答

4

使用,我没有一个问题:

=Iif(cstr(First(Fields!RegInceptionDate.Value, "spimRptPerfSummary")) = "", "-", First(Fields!RegInceptionDate.Value, "spimRptPerfSummary")) 

这是我的数据集的样子:

<Query> 
    <Method Namespace="http://www.abc.com/" Name="TWRPerformanceSummary"/> 
    <SoapAction>http://www.abc.com/TWRPerformanceSummary </SoapAction> 
    <ElementPath IgnoreNamespaces="true"> 
     TWRPerformanceSummaryResponse/TWRPerformanceSummaryResult/diffgram/NewDataSet/table{PkRegistration, InceptionDate(date),RegInceptionDate(string)} 
    </ElementPath> 
</Query> 

我的表达是一个文本框,这就是为什么我把它裹在数据集上的First()。我把数据集上的RegInceptionDate作为字符串(它的确是一个日期,但是因为它返回null而没有关系)。我不确定表达式中的cstr()是否必要,因为我在数据集本身上进行了强制转换。

+0

@Dustin,看起来像First()从数据集中获取第一个值。我是否假设返回的第一个值与“”模式类似? – technomalogical 2009-01-16 16:06:08

相关问题