ડાયનેમિક્સ AX 2012 માં X++ કોડમાંથી એનમના તત્વો પર કેવી રીતે પુનરાવર્તિત કરવું
પ્રકાશિત: 15 ફેબ્રુઆરી, 2025 એ 11:15:38 PM UTC વાગ્યે
આ લેખ સમજાવે છે કે કેવી રીતે ડાયનેમિક્સ AX 2012માં બેઝ એન્કમના તત્વો પર ગણતરી અને લૂપ કરવું, જેમાં X++ કોડ ઉદાહરણનો પણ સમાવેશ થાય છે.
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
આ પોસ્ટમાંની માહિતી ડાયનેમિક્સ એએક્સ ૨૦૧૨ આર ૩ પર આધારિત છે. તે અન્ય સંસ્કરણો માટે માન્ય હોઈ શકે છે અથવા ન પણ હોઈ શકે.
હું તાજેતરમાં જ એક ફોર્મ બનાવી રહ્યો હતો જેને ગણતરીમાં દરેક તત્વ માટે મૂલ્ય પ્રદર્શિત કરવાની જરૂર હતી. જાતે જ ફિલ્ડ્સ બનાવવાને બદલે (અને પછી જો ગણતરીમાં ક્યારેય ફેરફાર કરવામાં આવે તો ફોર્મ જાળવવાની જરૂર પડે છે), મેં તેને ગતિશીલ રીતે અમલમાં મૂકવાનું નક્કી કર્યું જેથી તે આપોઆપ ફિલ્ડ્સને રન ટાઇમમાં ડિઝાઇનમાં ઉમેરી શકે.
જો કે, મેં ટૂંક સમયમાં જ શોધી કાઢ્યું છે કે ગણતરીમાં મૂલ્યો પર ખરેખર પુનરાવર્તન કરવું, જ્યારે કેવી રીતે તે તમે જાણો છો તે પછી પૂરતું સરળ છે, તે થોડું મૂંઝવણભર્યું છે.
તમારે દેખીતી રીતે જ ડિક્ટએનમ વર્ગથી શરૂઆત કરવાની જરૂર છે. તમે જોશો તેમ, આ વર્ગમાં અનુક્રમણિકા અને મૂલ્ય બંનેમાંથી નામ અને લેબલ જેવી માહિતી મેળવવા માટે ઘણી પદ્ધતિઓ છે.
અનુક્રમણિકા અને મૂલ્ય વચ્ચેનો તફાવત એ છે કે અનુક્રમણિકા એ ગણતરીમાં રહેલ તત્વની સંખ્યા છે, જો ગણતરીનાં તત્વોને શૂન્યથી શરૂ કરીને ક્રમબદ્ધ રીતે ક્રમાંકિત કરવામાં આવ્યા હોય, જ્યારે મૂલ્ય એ તત્વનો વાસ્તવિક "મૂલ્ય" ગુણધર્મ છે. મોટા ભાગની ગણતરીમાં 0 થી ક્રમબદ્ધ રીતે મૂલ્યો હોય છે, તેથી તત્વની અનુક્રમણિકા અને મૂલ્ય ઘણીવાર સમાન હોય છે, પરંતુ ચોક્કસપણે હંમેશા નહીં.
પરંતુ તમે કેવી રીતે જાણી શકો કે ગણતરીમાં કયા મૂલ્યો છે? અહીંથી જ તે મૂંઝવણભરી બની જાય છે. DictEnum વર્ગ પાસે મૂલ્યો () તરીકે ઓળખાતી પદ્ધતિ છે. તમે અપેક્ષા કરી શકો છો કે આ પદ્ધતિ ગણતરીની કિંમતોની યાદી પાછી આપે, પરંતુ તે દેખીતી રીતે ખૂબ સરળ હશે, તેથી તેના બદલે તે ગણતરીમાં સમાવિષ્ટ મૂલ્યોની સંખ્યા પાછી આપે છે. જો કે, મૂલ્યોની સંખ્યાને વાસ્તવિક મૂલ્યો સાથે કોઈ લેવાદેવા નથી, તેથી તમારે આ સંખ્યાનો ઉપયોગ અનુક્રમણિકા-આધારિત પદ્ધતિઓને કોલ કરવા માટેના આધાર તરીકે કરવાની જરૂર છે, મૂલ્ય-આધારિત પદ્ધતિઓને નહીં.
જો માત્ર તેઓએ આ પદ્ધતિને અનુક્રમણિકાઓ () નામ આપ્યું હોત, તો તે ઓછું મૂંઝવણભર્યું હોત ;-)
એ પણ ધ્યાનમાં રાખો કે ગણતરી મૂલ્યો (અને દેખીતી રીતે આ "અનુક્રમણિકાઓ") 0 થી શરૂ થાય છે, X++ માં એરે અને કન્ટેનર અનુક્રમણિકાઓથી વિપરીત, જે 1 થી શરૂ થાય છે, તેથી ગણતરીમાંના તત્વો પર લૂપ કરવા માટે તમે આવું કંઇક કરી શકો છો:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
આ ગણતરીમાં દરેક તત્વના પ્રતીક અને લેબલને ઇન્ફોલોગમાં આઉટપુટ કરશે.