SSRS не может условно фильтровать «нулевые» значения из источника данных XML? - PullRequest
3 голосов
/ 16 января 2009

У меня есть отчет в SSRS 2008, в котором в качестве одного из источников данных используется веб-служба. Базовый вид возвращаемого XML:

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

Любые теги с атрибутом "nil" отображаются в отчете как пустые. Я хотел бы заменить любые пробелы тире. Поскольку это числовое поле, а в отчете есть значение ноль, я не могу просто изменить веб-сервис, чтобы он возвращал ноль или пустую строку. Я попытался выполнить несколько видов условных сравнений, чтобы поменять их местами, но все они отображаются в отчете как "#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)

Есть идеи?

Редактировать: Сбой проверки не был пустым, это было вложенное условие внутри первого ИИФ. После удаления я смог заставить его работать.

1 Ответ

4 голосов
/ 16 января 2009

У меня не было проблем с использованием:

 =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 () в DataSet. Я приведу RegInceptionDate к набору данных в виде строки (это действительно дата, но с момента ее возвращения в ноль это не имеет значения). Я не уверен, что cstr () в выражении является необходимым, поскольку у меня есть приведение к самому набору данных.

...