2009-01-16 49 views
3

我在SSRS 2008中有一個報告,它使用Web服務作爲其數據源之一。返回的XML的基本外觀爲SSRS無法有條件地過濾來自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

使用,我沒有一個問題:

=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()。我把數據集上的RegInceptionDate作爲字符串(它的確是一個日期,但是因爲它返回null而沒有關係)。我不確定表達式中的cstr()是否必要,因爲我在數據集本身上進行了強制轉換。

+0

@Dustin,看起來像First()從數據集中獲取第一個值。我是否假設返回的第一個值與「」模式類似? – technomalogical 2009-01-16 16:06:08

相關問題