您好我在文本框上有一个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 Reporting Service 2008。
经过一些实验,我发现它只在添加后返回#Error:
ABS(Sum(Fields!VarianceCostPriceValue.Value) / Sum(Fields!TheoCostPriceValue.Value)),
在此之前它工作正常,如果我将其转换为0.5之类的值,它可以正常工作。
答案 0 :(得分: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无法修复它。