Compare enum

Hi,

I need to retrieve a customer address when the field aff_CustPartnerChannel.Role is on ‘DelivredTo’.

Heres is my code :

aff_CustPartnerChannel aff;

aff_CustPartnerChannelRole role;

custTable = CustTable::find(‘SKS-003333’);

role = Global::enum2int(aff_CustPartnerChannelRole::InvoiceTo);

select * from aff

where aff.CustAccount == custTable.AccountNum;

&& aff.Role < role;

if(aff.Role < role)

{

info(strFmt(’%1 ', aff.Role));

}

My problem is that aff.Role is alaways on ‘DelivredTo’ while it is not always true.

Thanks for help !

NB : Sorry for my bad english.

Salut,

Je suppose que DeliverTo est la valeur par défaut de ton baseEnum, tu as un problème de type de données, je pense qu’en testant directement le baseEnum plutôt que la valeur numérique de celui-ci (celle qu’on voit si on attaque la base directement en SQL), ça marchera mieux, tu peux t’inspirer du code suivant (je suis en AX 2009, je n’ai pas ton base enum aff_CustPartnerChannelRole)

if(aff.Role != aff_CustPartnerChannelRole::InvoiceTo)

{

}

Cdlt,

Ca me semble bien fonctionner dans mon job, je vais voir ce que ça donne avec ma classe.

Merci beaucoup !

J’ai désormais un autre problème.

select * from aff

where aff.CustAccount == custTable.AccountNum;

info(strFmt("Compte : %1 ; %2 ", aff.CustAccount, aff.Role));

if(aff.Role != aff_CustPartnerChannelRole::InvoiceTo && aff_CustPartnerChannelRole::PayBy)

{

ret = aff.PartnerChannelAccount;

}

return ret;

Lorsque le Role est bien “DelivredTo” il passe bien dans mon if mais va variable ret reste vide…

C’est quel type de données ta variable ret ? y’a aussi un pb dans ton if si tu veux que aff.role soit différent de tes 2 baseEnum, il faut mettre if(aff.Role != aff_CustPartnerChannelRole::InvoiceTo && aff.Role != aff_CustPartnerChannelRole::PayBy), tu peux faire aussi plus simple avec return aff.PartnerChannelAccount directement dans ton if

Cdlt,

Ma variable ret est de type string donc je pense qu’un numéro de compte devrait passer.

Ben si je mets return aff.PartnerChannelAccount, il me dit que tous les chemins d’accès ne retournent pas une valeur.

Et j’ai essayé avec ce que tu viens de me dire mais rien n’y fait :confused:

Et je viens de remarquer au déboggage que dans mon where, aff.CustAccount est vide aussi…

Un numéro de compte ne passe pas forcément dans un string, idéalement, il faudrait mettre le même type que aff.PartnerChannelAccount, voir extended dataType de la colonne dans l’AOT, pour le pb des chemins, c’est pas bloquant, juste si tes conditions ne sont pas vérifiées, ta méthode ne renverra rien, il faudrait mettre un else avec la valeur renvoyées si tes conditions ne se vérifient pas.

Cdlt,

Je vais voir tout ça.

Merci beaucoup Thomas !

Guys, please don’t forget that this is an English-speaking forum and most community members can’t either participate or benefit from discussion in other languages.

c’est normal que ça marche pas dans ce cas

Sorry Martin. We will speak english now.

So now my where clause is good but my return is always empty…

Can you show full sample code and describe your requirement?

I did a mistake ! It’s now done !

Thank you very much for you useful help !

Best regards,