SSRS IIF 语句行为异常
SSRS IIF statement behaving strangely
我有一个图表数据要显示,而 SSRS 的行为可能是最奇怪的。为了解释事情,我在单个图表区域中有一个条形图和一个折线图。折线图就是问题所在。
为了理解这一点,下面是我正在处理的确切数据:
ID Hours Cost
-------------------
1 NULL NULL
2 NULL NULL
3 NULL NULL
4 NULL NULL
5 NULL NULL
6 NULL NULL
7 NULL NULL
8 0 718.11
9 0 905.61
10 0 546.73
11 0 -708.4
12 0 1095.19
13 NULL NULL
14 0 864.32
15 NULL NULL
16 0 2165.96
17 0 1745.61
18 NULL NULL
19 0 25984.04
20 80 8720.37
21 0 7074.41
22 0 -2431.18
现在,有了这些数据,我的折线图打印了以下测试表达式:
= IIF(RunningValue(Fields!Hours.Value,Sum,Nothing) <> 0, 100, 200)
这个表达式给了我一个正确的输出,这是一个连续的折线图,从值 200 到 ID 值 19。在那之后,图表转到 100 并继续。
当我将表达式更改为我的实际要求时,问题就开始了:
= IIF(RunningValue(Fields!Hours.Value,Sum,"Details") <> 0, (RunningValue(Fields!Cost.Value,Sum,"Details")/RunningValue(Fields!Hours.Value,Sum,"Details")), 0)
图表只是从 ID 8 中断到 ID 19。我不明白为什么。 IIF
方法的 ELSE
应该已经执行,因此应该绘制 0 值。对受影响的值集应该没有影响。有人可以帮我理解吗?
我已经使用以下语句解决了这个问题,但我自己也不确定为什么这行得通,而不是前面的语句。
= IIF(RunningValue(Fields!Hours.Value,Sum,"Details") <> 0, (RunningValue(Fields!Cost.Value,Sum,"Details") * RunningValue(Fields!Hours.Value,Sum,"Details") ^ -1), 0)
如果需要任何其他信息来理解这个问题,请告诉我。
我认为这是 IIF 语句解决这两种可能性并提出除以零错误的问题。
Does the iif function compute both paths in SSRS or is it short-circuited?
通常用户在分母为0的情况下将IIF添加到分子为0,在分母上添加第二个IIF以在0时除以1,因此在分母为0时结果为0。
我认为将函数更改为 1 的次方而不是除以零,结果是无穷大而不是除以 0。
我有一个图表数据要显示,而 SSRS 的行为可能是最奇怪的。为了解释事情,我在单个图表区域中有一个条形图和一个折线图。折线图就是问题所在。
为了理解这一点,下面是我正在处理的确切数据:
ID Hours Cost
-------------------
1 NULL NULL
2 NULL NULL
3 NULL NULL
4 NULL NULL
5 NULL NULL
6 NULL NULL
7 NULL NULL
8 0 718.11
9 0 905.61
10 0 546.73
11 0 -708.4
12 0 1095.19
13 NULL NULL
14 0 864.32
15 NULL NULL
16 0 2165.96
17 0 1745.61
18 NULL NULL
19 0 25984.04
20 80 8720.37
21 0 7074.41
22 0 -2431.18
现在,有了这些数据,我的折线图打印了以下测试表达式:
= IIF(RunningValue(Fields!Hours.Value,Sum,Nothing) <> 0, 100, 200)
这个表达式给了我一个正确的输出,这是一个连续的折线图,从值 200 到 ID 值 19。在那之后,图表转到 100 并继续。
当我将表达式更改为我的实际要求时,问题就开始了:
= IIF(RunningValue(Fields!Hours.Value,Sum,"Details") <> 0, (RunningValue(Fields!Cost.Value,Sum,"Details")/RunningValue(Fields!Hours.Value,Sum,"Details")), 0)
图表只是从 ID 8 中断到 ID 19。我不明白为什么。 IIF
方法的 ELSE
应该已经执行,因此应该绘制 0 值。对受影响的值集应该没有影响。有人可以帮我理解吗?
我已经使用以下语句解决了这个问题,但我自己也不确定为什么这行得通,而不是前面的语句。
= IIF(RunningValue(Fields!Hours.Value,Sum,"Details") <> 0, (RunningValue(Fields!Cost.Value,Sum,"Details") * RunningValue(Fields!Hours.Value,Sum,"Details") ^ -1), 0)
如果需要任何其他信息来理解这个问题,请告诉我。
我认为这是 IIF 语句解决这两种可能性并提出除以零错误的问题。
Does the iif function compute both paths in SSRS or is it short-circuited?
通常用户在分母为0的情况下将IIF添加到分子为0,在分母上添加第二个IIF以在0时除以1,因此在分母为0时结果为0。
我认为将函数更改为 1 的次方而不是除以零,结果是无穷大而不是除以 0。