Migration to Dynamics AX 2009 Official document

There are the two official documents for the migration to AX 2009.

Advertisements

Select statement using real value [forceliterals]

A while ago I noticed that in a X++ select statement, a wrong result is received when you do a comparison with Real values in the where clause.

Example:

select table
where (real1 + real2 == 3)

The above example selects the wrong record(s)!
I used 1.00 and 2.00 == 3.00, so it’s not a rounding issue.

Surprisingly, this result is OK when you work with Integer values:

select table
where (int1 + int2 == 3)

We forwarded this problem to Microsoft, because we encountered the above example with Real values in standard AX.
Going through all the records and filter out with an IF clause is not always an options due to performance reasons.

Microsoft replied today to this issue, and they suggest to use the keyword forceliterals as workaround.

Example:

select forceliterals table
where (real1 + real2 == 3)