gpt4 book ai didi

reporting-services - Reporting Services 表达式在某些情况下会出错

转载 作者:行者123 更新时间:2023-12-04 02:22:02 26 4
gpt4 key购买 nike

我在计算报告摘要行中的平均值时出错。我的表情是这样的:

=IIF(SUM(Fields!column3.Value) > 0, Format(DateAdd("s", (SUM(Fields!column4.Value) / SUM(Fields!column3.Value)), "00:00:00"), "HH:mm:ss"), "-")

(对不起,排得太长了)

当数据看起来像这样时,表达式工作正常:

8311    87  0   0
8311 41 0 0
8311 80 0 0
8311 136 1 136

想法是,如果第 2 列超过 120,则第 3 列为 1,否则为 0。仅当第 2 列大于 120 时,第 4 列的值才大于 0,在这种情况下,它与列的值相同2. 这样,对于报表服务中该组的汇总行,我可以确定大于 120 的总行数(通过在第 3 列上使用 SUM)。以同样的方式,我可以通过对第 4 列求和来确定第 2 列中大于 120 的值的总数。从那里,将第 4 列除以第 3 列以确定第 2 列的平均值应该是一件简单的事情超过 120 的值。

获得平均值后,我想将其转换为时间字符串(例如“00:02:16”)。如果没有值(即组中没有第2列值超过120,我想显示一个“-”)。

此逻辑似乎适用于第 2 列的值超过 120 的情况。但是,当第 3 列和第 4 列为 0 时,如下所示:

8310    108 0   0

表达式在运行报告时给出了可怕的#Error 结果。我假设这是一个被零除的错误,所以我在表达式中加入了 IIF 以检查我的平均计算中的分母是否 > 0。

遗憾的是,#Error 对于那些在第 3 列和第 4 列中有 0 的组仍然存在。我错过了什么?

最佳答案

SSRS 中的 iif 与 Visual Basic IIF 相同:它计算所有分支,如果任何部分产生错误,则整个函数将引发错误。

两种常见的解决方法:

  • 在报告中使用嵌入式代码,
  • 使用第二个 IIF,避免您的函数被零除。

第二种选择:替换:

=IIF(SUM(Fields!column3.Value) > 0, Format(DateAdd("s", (SUM(Fields!column4.Value) / SUM(Fields!column3.Value)), "00:00:00"), "HH:mm:ss"), "-")

=IIF(SUM(Fields!column3.Value) > 0, Format(DateAdd("s", (SUM(Fields!column4.Value) / IIF(SUM(Fields!column3.Value)>0,SUM(Fields!column3.Value),1)), "00:00:00"), "HH:mm:ss"), "-")

(我想我得到了正确数量的 parent ...)

还有许多处理被零除的嵌入式代码示例,这里有一个。 http://social.msdn.microsoft.com/Forums/is/sqlreportingservices/thread/b8e0730b-da60-49a8-8613-2309ff1a2c90

关于reporting-services - Reporting Services 表达式在某些情况下会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5344117/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com