SSRS无法有条件地从XML数据源中过滤“nil”值?

时间:2009-01-16 15:44:49

标签: sql-server xml web-services reporting-services ssrs-2008

我在SSRS 2008中收到一份报告,该报告使用网络服务作为其数据源之一。返回的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内的嵌套条件。一旦删除,我就能使它发挥作用。

1 个答案:

答案 0 :(得分: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>

我的表达式位于文本框中,这就是为什么我将它包装在DataSet上的First()中。我将RegInceptionDate作为字符串投射到数据集上(它确实是一个日期,但是因为它返回null并不重要)。我不确定表达式中的cstr()是否必要,因为我对数据集本身进行了强制转换。