0

こんにちは私はパーセンテージを与えるためにテキストボックスにSwitch式を持っています:

=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が正か負かを確認してから、正しい計算。

私の問題は、TheoCostPriceValueが0でVarianceCostPriceValueが2.35の場合、式が100%ではなく#Errorを返すことです(これは私が期待していることです)。

スイッチに問題はありませんが、100%ではなく#Errorが返されるのはなぜですか?

SQL ReportingService2008を使用しています。

いくつか実験した後、次を追加した後にのみ#Errorが返されることがわかりました。

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

その前は正常に動作し、これを0.5のような値に変換すると正しく動作します。

4

1 に答える 1

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にできないようにすることで修正されたようです。

于 2012-05-14T14:05:04.403 に答える