0

我在尝试执行以下操作时遇到问题。我正在尝试在标题中加入 iif 语句。这是在标签上评估的当前行:

=round(@Data.rp_TATStatAtBenchmark~/@Data.rp_TATStatCount~ * 100) + "%"

当@Data.rp_TATStatCount = 0 和@Data.rp_TATStatAtBenchmark = 0 时,我已将其更改为以下以处理错误(由于某种原因,报告显示???当第二个值为0而不是仅显示“0 %"。无论如何,这就是我要写的:

=IIf((@Data.rp_TATStatAtBenchmark~ = "0" OR @Data.rp_TATStatCount~ = "0"),"0%", round(@Data.rp_TATStatAtBenchmark~/@Data.rp_TATStatCount~ * 100) + "%" )

但它不工作。任何帮助,将不胜感激。谢谢!

4

1 回答 1

0

如果 @Data.rp_TATStatCount~ 值为 0,您看到“???”结果的原因 是因为除以零是一个没有意义的数学表达式(“未定义”)。这将始终返回为 undefined '???' 而不是数字——因此结果永远不会是 0。由于标记变量被简单地替换,因此即使您使用 iif() 语句,仍会检查表达式的有效性。

如果要创建除以零的异常,则还需要提供计算以检查何时 rp_TATStatCount = 0,并将其替换为非零整数,或使用不同的列名。最好的方法可能是创建第二个计算列来检查零(您的 iif() 语句),然后使用这个新创建的列来执行您的 round() 函数。

这是一个使用现有列名的静态数据层内的快速示例:

<DataLayer Type="Static" ID="dlStatic">
 <StaticDataRow rp_TATStatAtBenchmark="0" rp_TATStatCount="0" />
   <CalculatedColumn Formula="iif(@Data.rp_TATStatCount~=0, 1, @Data.rpTATStatCount~)" ID="StatCount2" />
   <CalculatedColumn Formula="iif(@Data.rp_TATStatAtBenchmark~ = &quot;0&quot; OR @Data.rp_TATStatCount~ = &quot;0&quot;, &quot;0%&quot;, round(@Data.rp_TATStatAtBenchmark~ / @Data.StatCount2~ * 100) + &quot;%&quot;)" ID="pctCol" />
</DataLayer>
于 2012-06-21T13:08:06.370 回答