Compare variables of type "Variant"

wittgensteinwittgenstein 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_GuzekSlawek_Guzek Member Posts: 1,690
    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
    Dynamics NAV, MS SQL Server, Wherescape RED;
    PRINCE2 Practitioner - License GR657010572SG
    GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-03

Answers

  • Slawek_GuzekSlawek_Guzek Member Posts: 1,690
    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
    Dynamics NAV, MS SQL Server, Wherescape RED;
    PRINCE2 Practitioner - License GR657010572SG
    GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-03
Sign In or Register to comment.