SSRS表达式#Error - 计算变量在除以零时显示错误

时间:2017-04-27 16:04:06

标签: reporting-services expression division zero

我目前正在使用公式计算变量,如下所示:

=(Fields!MontantInitialRegime.Value/Fields!MontantInitial.Value)*Fields!SoldeFacture.Value

它的效果很好,除了分子和分母都等于零的情况。

我做了一些研究,并尝试使用下面的公式解决它,但这不起作用。

=IIF(Fields!MontantInitialRegime.Value = 0, Fields!SoldeFacture.Value, Fields!MontantInitialRegime.Value /
IIF(Fields!MontantInitial.Value = 0, Fields!SoldeJour.Value, (Fields!MontantInitialRegime.Value/Fields!MontantInitial.Value)*Fields!SoldeFacture.Value))

请注意,如果除法结果有误,我想显示Fields!SoldeFacture.Value

以下是当前输出的示例:

3 个答案:

答案 0 :(得分:0)

这应该有效:

如果Fields!MontantInitial.Value = 0(ERROR),则按要求显示Fields!SoldeFacture.Value,否则请继续进行计算。

=IIf(Fields!MontantInitial.Value = 0, Fields!SoldeFacture.Value, Fields!MontantInitialRegime.Value/Fields!MontantInitial.Value)*Fields!SoldeFacture.Value)

答案 1 :(得分:0)

好的,如果我理解正确的话,我认为当发生分割错误时你需要Fields!SoldeFacture.Value

只有当分母为0,0 / 5 = 0但5/0 =错误时才会发生除法错误!

所以,按照你说的现有公式,你几乎就在那里:

=(Fields!MontantInitialRegime.Value/Fields!MontantInitial.Value)*Fields!SoldeFacture.Value

我们需要做的是在它周围添加Immediate IF条件以检查分母是否为0:

=IIF(Fields!MontantInitial.Value = 0, Fields!SoldeFacture.Value, (Fields!MontantInitialRegime.Value/Fields!MontantInitial.Value)*Fields!SoldeFacture.Value)

作为解释,以下内容:

=IIF(Fields!MontantInitialRegime.Value = 0, Fields!SoldeFacture.Value, Fields!MontantInitialRegime.Value / IIF(Fields!MontantInitial.Value = 0, Fields!SoldeJour.Value, (Fields!MontantInitialRegime.Value/Fields!MontantInitial.Value)*Fields!SoldeFacture.Value))

基本上是说Fields!MontantInitialRegime.Value = 0然后使用Fields!SoldeFacture.Value中的值并除Fields!SoldeJour.Value Fields!MontantInitial.Value = 0或者使用0&#39进行初始计算((Fields!MontantInitialRegime.Value/Fields!MontantInitial.Value)*Fields!SoldeFacture.Value)) ;在表中,你总会在这里得到除以零的结果。

希望这有帮助。

利。

答案 2 :(得分:0)

我终于找到了问题的答案: = IIF((Fields!MontantInitial.Value< = 0 OR IsNothing(Fields!MontantInitial.Value)),Fields!SoldeJour.Value,  (Fields!MontantInitialRegime.Value / IIF(Fields!MontantInitial.Value< = 0 OR IsNothing(Fields!MontantInitial.Value),   1,Fields!MontantInitial.Value))* Fields!SoldeJour.Value)

我按照建议添加了另一个IIF,并替换了1对1本身的变量,如下面的答案所示,它运作良好!

SSRS 2008 - Dealing with division by zero scenarios

感谢您的合作! :)