我在尝试执行以下操作时遇到问题。我试图在标题中加入一个iif语句。这是在标签上评估的当前行:
= round(@ 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%”,round(@ Data.rp_TATStatAtBenchmark~ / @ Data.rp_TATStatCount~ * 100)+“%”)
但它不起作用。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:0)
如果@ Data.rp_TATStatCount~值为0,则表示您看到“???”的结果因为除以零是一个没有意义的数学表达式('undefined')。这总是会返回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~ = "0" OR @Data.rp_TATStatCount~ = "0", "0%", round(@Data.rp_TATStatAtBenchmark~ / @Data.StatCount2~ * 100) + "%")" ID="pctCol" />
</DataLayer>