Yadda za a Iterate a kan Abubuwa na Wani Enum daga X ++ Code a Dynamics AX 2012
Buga: 15 Faburairu, 2025 da 23:11:18 UTC
Wannan talifin ya bayyana yadda za a lissafa kuma a yi ƙara a kan abubuwa na ƙarƙashin enum a Dynamics AX 2012, har da misalin kodin X++.
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
Bayanin da ke cikin wannan post ya dogara ne akan Dynamics AX 2012 R3. Zai iya zama daidai ko kuma ba zai yiwu ba ga wasu juyin.
Ba da daɗewa ba na yin fom da ake bukata don in nuna amfani ga kowane abu a cikin enum. Maimakon na halicci gona da hannu (wannan kuma na bukaci a kiyaye fom idan an canja enum), na tsai da shawara na yi amfani da shi da ƙarfi don ya ƙara filin farat ɗaya zuwa ƙera a lokacin da ake tafiyar da shi.
Amma, ba da daɗewa ba na gano cewa yin hakan yana da ban mamaki.
Hakika, kana bukatar ka soma da aji na DictEnum. Kamar yadda za ka gani, wannan aji yana da hanyoyi da yawa na samun bayani kamar suna da laƙabin daga index da kuma tamani.
Bambancin tsakanin index da tamani shi ne cewa index alƙaluman wani abu ne a cikin enum, idan an ƙididdige abubuwa na enum da suka soma daga banza, yayin da tamani shi ne "ma'anar" dukiya na ainihi na ƙanshin. Tun da yake yawancin enums suna da kimar da aka ƙididdige daga 0, indeki da tamanin wani abu sau da yawa za su kasance daidai, amma babu koyaushe.
Amma ta yaya ka san waɗanne ƙa'idodi ne enum yake da su? A nan ne yake da ban mamaki. Aji na DictEnum yana da hanyar da ake kira ƙa'idodi (). Za ka iya sa rai cewa wannan hanyar za ta mai da jerin ƙa'idodin enum, amma hakan zai kasance da sauƙi, saboda haka, maimakon haka zai mai da adadin ƙa'idodin da enum yake ƙunsa. Amma, adadin ƙa'idodin ba ya da alaƙa da tamani na gaske, saboda haka, kana bukatar ka yi amfani da wannan alƙaluman a matsayin tushe don ka kira hanyoyin da ke bisa indake, ba waɗanda suke bisa tamani ba.
Da a ce sun ba da sunan wannan hanyar index () maimakon haka, da ba za ta kasance da ban mamaki ba;-)
Ka kuma tuna cewa ƙa'idodin enum (da kuma waɗannan "index") suna somawa a 0, ba kamar indice na tsari da na kwal a X++, da ke somawa a ƙarfe 1, don ka ƙera abubuwa cikin enum za ka iya yin wani abu kamar wannan:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
Wannan zai samar da alamar da kuma labarin kowane abu a cikin enum zuwa infolog.