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 时,表达式返回 #Error,而不是 100%(这是我所期望的)。

我看不到我的开关有任何问题,但是为什么它会返回 #Error 而不是 100%?

我正在使用 SQL 报告服务 2008。

经过一番实验,我发现添加后它只返回#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 回答