2012-05-14 53 views
0

您好我有一個文本框的開關表達式給出的百分比:SQL報表切斷開關表達不給正確的結果

=Switch(

    Sum(Fields!TheoCostPriceValue.Value) = 0 AND 
    Sum(Fields!VarianceCostPriceValue.Value) = 0, 0, 

    Sum(Fields!TheoCostPriceValue.Value) = 0 Or 
     Sum(fields!VarianceCostPriceValue.Value) = 0, 1, 

    Sum(Fields!VarianceCostPriceValue.Value) > 0 AND Sum(Fields!TheoCostPriceValue.Value) <> 0, 
     ABS(Sum(Fields!VarianceCostPriceValue.Value)/Sum(Fields!TheoCostPriceValue.Value)) 

) 

基本上如果TheoCostPriceValue和VarianceCostPriceValue均爲0,那麼結果應該是0,如果他們都是0,那麼它應該是1. 如果它們都不是0,我將檢查VarianceCostPriceValue是正值還是負值,然後進行正確的計算。

我的問題是,當我有一個0的TheoCostPriceValue和2.35的VarianceCostPriceValue表達式返回#Error,而不是100%(這是我所期望的)。

我看不到我的開關有任何問題,但是爲什麼它會返回#Error而不是100%?

我使用SQL報告服務2008年

一些試驗後,我發現,它只是加入後返回#錯誤:

ABS(Sum(Fields!VarianceCostPriceValue.Value)/Sum(Fields!TheoCostPriceValue.Value)), 

,它工作正常之前,如果我把這個成0.5像這樣的值,它工作正常。

回答

0

好吧,這似乎有點奇怪,即使我檢查看看TheoCostPriceValue是否不是0,它似乎仍然通過某種方式傳遞。

我表達更新到這一點:

=Switch(

Sum(Fields!TheoCostPriceValue.Value) = 0 AND Sum(Fields!VarianceCostPriceValue.Value) = 0, 
    0, 

Sum(Fields!TheoCostPriceValue.Value) = 0 OR Sum(Fields!VarianceCostPriceValue.Value) = 0, 
    1, 

Sum(Fields!VarianceCostPriceValue.Value) > 0 AND Sum(Fields!TheoCostPriceValue.Value) <> 0, 
    ABS(Sum(Fields!VarianceCostPriceValue.Value)/
    IIF(Sum(Fields!TheoCostPriceValue.Value) = 0, 
     1, 
     Sum(Fields!TheoCostPriceValue.Value)))) 

,並開始工作。

我不知道爲什麼會發生這種情況,但似乎確保TheoCostPriceValue不能被0修復它。