2

希望你好。 我正在處理報告,似乎得到了#error。似乎它是一個被零分錯誤的分隔線,但我無法找到解決方案。表達:SSRS除以零的錯誤表達

=(Sum(Fields!Line_Sell.Value) - Sum(Fields!Line_Cost.Value))/Sum(Fields!Line_Sell.Value) 

我是比較新的RS,但試圖

ISNULL() 

,但沒有成功。

任何幫助,我會很感激。

感謝

+0

我現在想這個值,但沒有喜悅:! = IIF(總和(場Line_Sell.Value)= 0,0,SUM(字段Line_Sell。 Value) - Sum(Fields!Line_Cost.Value)/ iif(Sum(Fields!Line_Sell.Value)= 0,1,Sum(Fields!Line_Sell.Value)) – Steven 2012-07-23 10:26:37

回答

1

在您的評論的表達看起來不完整的,所以我不能告訴你嘗試下一個沒有工作。在執行劃分之前,你一定要測試零。

你可以試試這個:

=iif(Sum(Fields!Line_Sell.Value) = 0, 0, (Sum(Fields!Line_Sell.Value) - Sum(Fields!Line_Cost.Value))/Sum(Fields!Line_Sell.Value)) 

或者還需要檢查空值,你可以試試這個:

=iif((Sum(Fields!Line_Sell.Value) = 0 or IsNothing(Sum(Fields!Line_Sell.Value)), 0,Sum(Fields!Line_Sell.Value) - Sum(Fields!Line_Cost.Value))/Sum(Fields!Line_Sell.Value)) 

如果這還沒有產生結果,打破了表達和運行那個報告。嘗試Sum(Fields!Line_Sell.Value)本身,運行報告並查看所得到的結果。爲了更有效率創建一個表,其中一列用於Fields!Line_Sell.Value,另一列用於Fields!Line_Cost.Value。在表中,包含詳細信息行並添加總行,以便您可以單獨獲取每個這些字段的Sum函數。您需要查看詳細記錄以嘗試推斷聚合函數不起作用的原因。底線 - 分解你的表情並逐個測試它。答案就在那裏。

+0

幾天後,我們得到了一些幫助,使用: = iif(Sum(Fields!Line_Sell.Value)= 0,0,Sum(Fields!Line_Sell.Value - Fields!Line_Cost.Value)/ Sum(Fields!Line_Sell.Value)) 原來我是總結了太多的值 – Steven 2012-07-26 12:33:02

5

假設您有一個表達式設置爲x/y,其中y可能爲零。如你所見,SSRS會將此值更改爲#ERR(有時爲NaN)。 你的本能反應將是檢驗零

=Iif(y = 0, 0, x/y) 

不幸的是,這可能會導致一個調試器的警告,說你正試圖除以零。這是因爲SSRS在編譯期間試圖評估整個語句。 因此,我們需要提供SSRS一個值,它可以評估

=x * y^-1 

這是一樣的你的Y值劃分,但SSRS認爲這是由無限分割,因此可以使評估。 作爲最後一步,您需要確保您的代碼可以正確導出到Excel。根據2012年SSRS(可能稍後,我還沒有測試過),SSRS有一個問題,可能的零值導出到Excel爲0.000000000000000,並導致數據錯誤丟失。 要糾正這一點,我們明確地輸出的零

=Iif(x = 0 OR y = 0, 0, x * y^-1)