Compare variables of type "Variant"

wittgenstein
wittgenstein Member Posts: 17
Hi,

is there a possibility to compare variables of type variant?
Simple compare operations don't seem to work.
E.g.
bool := var1 = var2;
bool := var1 <> var2;
bool := var1 > var2;

Is there a way to keep this simple or do I have to check the type and EVALUATE?
In addition, is there a way to return the datatype of a variant? I don't want to do it by
IF var1.ISDECIMAL THEN ...

Thanks in advance.

Best Answer

  • Slawek_Guzek
    Slawek_Guzek Member Posts: 1,692
    Answer ✓
    You can try
    IF FORMAT(var1) = FORMAT(var2) THEN...
    
    It would help with simple datatypes, and in = or <> cases, but > or < or other combinations may not make sense, because you will be effectively comparing strings, not the actual values.

    As for the datatype of variant, as far as I know there is no other way than var1.ISDECIMAL.. and so on. Not in C/AL.

    Maybe assigning a variant to a .NET and then getting back the type could be is possible, but if it is I'd guess that it would work only for simple data types.

    Slawek
    Slawek Guzek - www.yitron.co.uk
    Business Central, MS SQL Server, Wherescape RED;

Answers

  • Slawek_Guzek
    Slawek_Guzek Member Posts: 1,692
    Answer ✓
    You can try
    IF FORMAT(var1) = FORMAT(var2) THEN...
    
    It would help with simple datatypes, and in = or <> cases, but > or < or other combinations may not make sense, because you will be effectively comparing strings, not the actual values.

    As for the datatype of variant, as far as I know there is no other way than var1.ISDECIMAL.. and so on. Not in C/AL.

    Maybe assigning a variant to a .NET and then getting back the type could be is possible, but if it is I'd guess that it would work only for simple data types.

    Slawek
    Slawek Guzek - www.yitron.co.uk
    Business Central, MS SQL Server, Wherescape RED;