2014-01-07 61 views
1

最近我遇到了與SSRS中使用IIF()函數不一致的問題。我正在研究具有多個條件的聚合函數。假設我有這樣的代碼:使用IIF()函數的SSRS Report Builder表達式錯誤

=Sum(IIF(Fields!MATL_STAT.Value="Disposed", Fields!MATL_SIZE.Value,0)) 

通過說明書中,表述確定MATL的大小的總和與MATL_STAT = "Disposed"但每次我運行有一個#錯誤的報告。

我的理論是你不能把字段放在IIF()函數的「真正選項」中。

現在,如果我的理論是正確的,是否有解決方法呢?

+0

IIRC這應該工作。你可以在其中一個領域拋出一個NULL的NULL(特別是DbNull)嗎? –

+0

我已經使用'NVL()'函數消除了查詢中的所有空值。順便說一句,我使用Oracle。 –

+0

您絕對可以將字段放入IIF函數的真實選項中。有時候當你期待不同的數據類型時,你會得到#error。你可以做CStr(Fields!MATL_STAT.Value)= CStr(「Disposed」),看看你是否仍然有錯誤? – mmarie

回答

1

經過使用內建函數的廣泛研究是SSRS報告服務後,該字段將不同數據類型(double/int)相加。統一的數據類型,我用CDbl()功能如下:

=Sum(IIF(Fields!MATL_STAT.Value="Disposed", CDbl(Fields!MATL_SIZE.Value),CDbl(0.0))) 
0

可以使用十進制轉換(CDEC)以及原因是該值的輸出量以小數未來..