我在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内的嵌套条件。一旦删除,我就能使它发挥作用。
答案 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()是否必要,因为我对数据集本身进行了强制转换。