Expression Binding not working in 7.9

Hi Team,

I am binding an expression to multistate Indicator component in 7.9 version and It is not working but same expression is working in 7.3 version.
I am unable to figure out what’s wrong here.
Can anyone please help me with this?



7.3 application returns 1 value and 7.9 version returns 2 value.

Expected value is 1

below is my expression-

if({Root Container.Container 4.Range}=1 && {Root Container.Container 4.Actual.text}!=’’,
if({Root Container.Container 4.Actual.ResultNumber}!=-999,
if({Root Container.Container 4.Actual.ResultNumber}>
{Root Container.Container 4.RUSL}
||{Root Container.Container 4.Actual.ResultNumber}<
{Root Container.Container 4.RLSL},
if({Root Container.Container 4.Actual.ResultPass}>
{Root Container.Container 4.RUSL}||
{Root Container.Container 4.Actual.ResultPass}<
{Root Container.Container 4.RUSL},2,1)),0)

Please highlight code and use the </> button to make it more readable.

  1. format your scripts when you post using the </> button.
  2. how is anyone supposed to debug this rats nest of an expression?

I would break this up into smaller expressions, then use a parent expression that uses the smaller child expressions to make it easier to read and debug.

For starters, the inner if should probably be (using short names)

if(ResultPass != RUSL ,1,2)

Full simplified version

if(Range = 1 && len(Actual.text), if(ResultNumber != -999, if(ResultNumber > RUSL || ResultNumber < RLSL,2,1), if(ResultPass != RUSL ,1,2)),0)

With value replacements

if(Range = 1 && len(Actual.text), if(27 != -999, if(27 > 0 || 27 < 10,2,1), if(ResultPass != 0 ,1,2)),0)

This logic returns 2 based on your numbers

If this was a copy and paste consider using the lower limit in one of your compares.