3

我在 SSRS 2008 中有一份报告,它使用 Web 服务作为其数据源之一。返回的 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

1 回答 1

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() 是否必要,因为我对数据集本身进行了强制转换。

于 2009-01-16T15:55:31.540 回答