当XPATH不存在时,SSRS返回一行DataSet

时间:2013-04-04 23:53:58

标签: sql-server-2008 xpath reporting-services

SSRS 2008 R2

这基本上与此question重复。

...但是那里发布的解决方案对我不起作用。

重要的是要注意,如果有数据,那么一切都适合我。

如果使用未在XML文档中解析的XPATH进行查询,为什么SSRS会返回一行DataSet?

例如,如果我有一个名为“Address”的DataSet:

<Country>
</Country>

我的XPATH是:

Country/City{Street}

(例如)

我得到一个DataSet返回一行,该行中的每个字段似乎都是错误 - 因为我对它执行的任何操作都失败了。因此我甚至无法在其上放置隐藏的过滤器,因为我的隐藏表达式无法执行并且显示的行 - 完全空白。

如果City元素在那里那就没关系了。

在测试,如果我尝试一行来创建一个文本框和做字段的任何操作,都无法和整个文本框只是显示不出来,即使有在这串文字。

例如,如果我将带有表达式的TextBox放在

="Rows: " & CountRows("Address")

我得到了结果:

1

但是如果我将同一个文本框(在表格单元格中)更改为:

="Rows: " & CountRows("Address") & " Hide:" & IIF(IsNothing(Fields!Street.Value), "yes", "no")

文本框根本没有显示,但表格行仍然被绘制并且是空白的。

我在很多地方遇到过这种情况,并且总是设法在源XML上破解它,但在这种情况下这是不可能的。

DataSet中的那一行发生了什么?

1 个答案:

答案 0 :(得分:0)

在XPath查询中添加过滤器以过滤掉空元素。

类似的东西:

Country/City{Street}[string-length(Street) &gt; 0]

或者也许?

Country/City[string-length(Street) &gt; 0]{Street}

(我的XPath有点生锈...]