I’m having an issue getting my validations to work correctly in Apex.
I have 3 page items that are causing me trouble, :P5_JACKPOT, :P5_TICKET_PRIZE, :P5_TOTAL_PRIZE. Jackpot can be any size, and ticket_prize + total_prize can be any size as long as they are LESS then jackpot. The validations I have in place for this are as follows:
if :P5_TICKET_PRIZE > :P5_JACKPOT then
return false;
else
return true;
end if;
Same validation for both items, with the necessary replacements, simple enough. The issue is, it doesn’t seem to work for all numbers. For example, having a jackpot value of 200, and 50 for both other items cause the error to flag, when it shouldn’t. However, having a jackpot value of 200, and other values of 100 + 100 don’t cause the error flag, as it should. It seems that some numbers work, and others don’t. Is there any reason why this is?
It sounds like the problem is one of data typing.
:P5_TICKET_PRIZEand:P5_JACKPOTare both strings so when you compare them, you get character comparison semantics. Alphabetically, the string “50” comes after the string “200” since the character “5” comes after the character “2”. If you want to compare the numeric value in:P5_TICKET_PRIZEto the numeric value in:P5_JACKPOT, you’d need to apply ato_numberfunction to both sides of the expression