我在试图做以下工作时遇到了困难。我正试图将iif声明包含在标题中。这是在标签上计算的当前行:
=圆形(@ Data.rp_TATStatAtBenchmark~ /@ Data.rp_TATStatCount~ * 100) + "%"
当@ Data.rp_TATStatCount =0和@ Data.rp_TATStatAtBenchmark =0时,我将其改为汉德尔错误(出于某种原因,报告显示了?)当第二个值为0,而不是仅显示"0%“时。总之,这就是我想写的:
=IIf((@ Data.rp_TATStatAtBenchmark~ = "0“或@ Data.rp_TATStatCount~ = "0"),"0%",圆形(@ Data.rp_TATStatAtBenchmark~ /@ Data.rp_TATStatCount~ * 100) + "%")
但这是行不通的。任何帮助都将不胜感激。谢谢!
发布于 2012-06-21 13:08:06
如果@Data.rp_TATStatCount~值为0,则看到“??”结果的原因是??是因为除以零是一个没有意义的数学表达式(“未定义的”)。这将始终以“??”的形式返回。而不是一个数字--所以结果永远不会是0。由于令牌变量只是简单地被替换,即使您使用的是iif()语句,表达式仍然会被检查是否有效。
如果您想要为除以零创建一个异常,那么您还需要提供一个计算来检查何时rp_TATStatCount = 0,或者用一个非零整数替换它,或者使用一个不同的列名。最好的方法可能是创建第二个计算列,该列检查零( iif()语句),然后使用这个新创建的列来执行圆形()函数。
下面是使用现有列名的静态数据器内部的一个快速示例:
<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~ = "0" OR @Data.rp_TATStatCount~ = "0", "0%", round(@Data.rp_TATStatAtBenchmark~ / @Data.StatCount2~ * 100) + "%")" ID="pctCol" />
</DataLayer>https://stackoverflow.com/questions/11124213
复制相似问题