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
An sabunta ta ƙarshe: 12 Janairu, 2026 da 08:42:16 UTC
Wannan labarin ya bayyana yadda ake ƙididdigewa da kuma lanƙwasa abubuwan da ke cikin jerin tushe a cikin Dynamics AX 2012, gami da misalin lambar X++.
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
Bayanin da ke cikin wannan sakon ya dogara ne akan Dynamics AX 2012 R3. Yana iya zama ko ba zai yi aiki ba ga wasu sigar.
Kwanan nan na ƙirƙiri wani tsari wanda ke buƙatar nuna ƙima ga kowane abu a cikin wani enum. Maimakon ƙirƙirar filayen da hannu (sannan kuma ina buƙatar kula da fom ɗin idan an taɓa gyara enum ɗin), na yanke shawarar aiwatar da shi ta atomatik ta yadda zai ƙara filayen ta atomatik zuwa ƙirar a lokacin aiki.
Duk da haka, nan da nan na gano cewa maimaita ƙimomin a cikin jerin, kodayake yana da sauƙi da zarar kun san yadda ake yi, yana da ɗan rikitarwa.
Babu shakka kana buƙatar fara da ajin DictEnum. Kamar yadda za ka gani, wannan ajin yana da hanyoyi da dama don samun bayanai kamar suna da lakabi daga fihirisa da ƙima.
Bambanci tsakanin fihirisa da ƙima shine fihirisa lambar wani abu ne a cikin fihirisa, idan an ƙidaya abubuwan enum a jere tun daga sifili, yayin da ƙima ita ce ainihin "ƙimar" abin. Kamar yadda yawancin fihirisa suna da ƙima da aka ƙidaya daga 0 a jere, fihirisa da ƙimar wani abu sau da yawa za su kasance iri ɗaya, amma tabbas ba koyaushe ba ne.
Amma ta yaya za ku san waɗanne ƙimomin da enum ke da su? Nan ne yake rikicewa. Ajin DictEnum yana da hanyar da ake kira dabi'u(). Kuna iya tsammanin wannan hanyar za ta dawo da jerin ƙimomin enum, amma hakan a bayyane yake zai yi sauƙi, don haka maimakon haka yana dawo da adadin ƙimomin da enum ke ɗauke da su. Duk da haka, adadin ƙimomin ba shi da alaƙa da ainihin ƙimomin, don haka kuna buƙatar amfani da wannan lambar a matsayin tushen kiran hanyoyin da aka dogara da fihirisa, ba waɗanda aka dogara da ƙima ba.
Da ace sun sanya wa wannan hanyar suna a maimakon haka, da ba zai zama mai rikitarwa ba ;-)
Kuma ku tuna cewa ƙimar enum (kuma a bayyane yake waɗannan "fihirisa") suna farawa daga 0, ba kamar jerin jeri da kwantenar da ke cikin X++ ba, waɗanda suka fara daga 1, don haka don madauki akan abubuwan da ke cikin enum za ku iya yin wani abu kamar haka:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
Wannan zai fitar da alamar da lakabin kowane abu a cikin jerin zuwa ga infolog ɗin.
Karin Karatu
Idan kuna jin daɗin wannan sakon, kuna iya kuma son waɗannan shawarwari:
- Kira AIF Document Services kai tsaye daga X ++ a Dynamics AX 2012
- Amfani da Tsarin SysExtension don Gano Wane Subclass zuwa Instantiate a Dynamics AX 2012
- Kuskure "Ba a bayyana aji na data don abun alkawarin data" a Dynamics AX 2012
