Page 1 of 1

IIF - when are the true/false results evaluated

Posted: Thu Sep 15, 2011 9:04 am
by Tobias
Today I stumbled upon this:

{IIF(Sum(Items.Total+Items.Discount) != 0, Sum(Items.Discount) / Sum(Items.Total+Items.Discount), 0)}

...it throws a division-by-zero exception when Sum(Items.Total+Items.Discount) is 0.

Are both the true and false results of IIF always evaluated, independently of the condition?

(BTW: Using {Sum(Items.Total+Items.Discount) != 0 ? Sum(Items.Discount) / Sum(Items.Total+Items.Discount) : 0} now)

IIF - when are the true/false results evaluated

Posted: Fri Sep 16, 2011 1:20 am
by HighAley
Hello.
Tobias wrote:Today I stumbled upon this:

{IIF(Sum(Items.Total+Items.Discount) != 0, Sum(Items.Discount) / Sum(Items.Total+Items.Discount), 0)}

...it throws a division-by-zero exception when Sum(Items.Total+Items.Discount) is 0.

Are both the true and false results of IIF always evaluated, independently of the condition?

(BTW: Using {Sum(Items.Total+Items.Discount) != 0 ? Sum(Items.Discount) / Sum(Items.Total+Items.Discount) : 0} now)
IIF() is a function. When it is called all parameters evaluates. In your case you must use a ? : operand to prevent division by zero error.

Thank you.