Miklix

ડાયનેમિક્સ AX 2012 માં X++ કોડમાંથી એનમના તત્વો પર કેવી રીતે પુનરાવર્તિત કરવું

પ્રકાશિત: 15 ફેબ્રુઆરી, 2025 એ 11:15:38 PM UTC વાગ્યે
છેલ્લે અપડેટ કરેલ: 12 જાન્યુઆરી, 2026 એ 08:42:25 AM UTC વાગ્યે

આ લેખ સમજાવે છે કે ડાયનેમિક્સ AX 2012 માં બેઝ એનમના તત્વોની ગણતરી અને લૂપ કેવી રીતે કરવી, જેમાં X++ કોડ ઉદાહરણનો સમાવેશ થાય છે.


આ પૃષ્ઠ શક્ય તેટલા વધુ લોકો સુધી સુલભ બને તે માટે અંગ્રેજીમાંથી મશીન અનુવાદ કરવામાં આવ્યો હતો. કમનસીબે, મશીન અનુવાદ હજુ સુધી સંપૂર્ણ તકનીક નથી, તેથી ભૂલો થઈ શકે છે. જો તમે ઇચ્છો, તો તમે મૂળ અંગ્રેજી સંસ્કરણ અહીં જોઈ શકો છો:

How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012

આ પોસ્ટમાં આપેલી માહિતી ડાયનેમિક્સ AX 2012 R3 પર આધારિત છે. તે અન્ય સંસ્કરણો માટે માન્ય હોઈ શકે છે અથવા ન પણ હોઈ શકે.

હું તાજેતરમાં એક ફોર્મ બનાવી રહ્યો હતો જેમાં enum માં દરેક એલિમેન્ટ માટે મૂલ્ય દર્શાવવાની જરૂર હતી. ફીલ્ડ્સ મેન્યુઅલી બનાવવાને બદલે (અને પછી જો enum ક્યારેય સંશોધિત થાય તો ફોર્મ જાળવવાની જરૂર), મેં તેને ગતિશીલ રીતે અમલમાં મૂકવાનું નક્કી કર્યું જેથી તે રન ટાઈમ પર ડિઝાઇનમાં આપમેળે ફીલ્ડ્સ ઉમેરે.

જોકે, મને ટૂંક સમયમાં જ ખબર પડી કે ખરેખર enum માં મૂલ્યો પર પુનરાવર્તન કરવું, જ્યારે તમે જાણો છો કે કેવી રીતે કરવું તે પૂરતું સરળ છે, તે થોડું ગૂંચવણભર્યું છે.

તમારે સ્પષ્ટપણે DictEnum ક્લાસથી શરૂઆત કરવાની જરૂર છે. જેમ તમે જોશો, આ ક્લાસમાં ઇન્ડેક્સ અને મૂલ્ય બંનેમાંથી નામ અને લેબલ જેવી માહિતી મેળવવા માટે ઘણી પદ્ધતિઓ છે.

ઇન્ડેક્સ અને વેલ્યુ વચ્ચેનો તફાવત એ છે કે ઇન્ડેક્સ એ એનમમાં એક એલિમેન્ટનો નંબર છે, જો એનમના એલિમેન્ટને શૂન્યથી શરૂ કરીને ક્રમિક રીતે ક્રમાંકિત કરવામાં આવ્યા હોય, જ્યારે વેલ્યુ એ એલિમેન્ટનો વાસ્તવિક "મૂલ્ય" ગુણધર્મ છે. મોટાભાગના એનમમાં 0 થી ક્રમિક રીતે ક્રમાંકિત મૂલ્યો હોવાથી, એલિમેન્ટનો ઇન્ડેક્સ અને મૂલ્ય ઘણીવાર સમાન હશે, પરંતુ ચોક્કસપણે હંમેશા નહીં.

પણ તમે કેવી રીતે જાણો છો કે enum માં કયા મૂલ્યો છે? અહીં વાત ગૂંચવણમાં મૂકે છે. DictEnum ક્લાસમાં values() નામની એક પદ્ધતિ છે. તમે આ પદ્ધતિથી enum ના મૂલ્યોની યાદી પરત કરવાની અપેક્ષા રાખી શકો છો, પરંતુ તે સ્પષ્ટપણે ખૂબ સરળ હશે, તેથી તે enum માં રહેલા મૂલ્યોની સંખ્યા પરત કરે છે. જો કે, મૂલ્યોની સંખ્યાનો વાસ્તવિક મૂલ્યો સાથે કોઈ સંબંધ નથી, તેથી તમારે આ સંખ્યાનો ઉપયોગ ઇન્ડેક્સ-આધારિત પદ્ધતિઓને કૉલ કરવા માટે આધાર તરીકે કરવાની જરૂર છે, મૂલ્ય-આધારિત પદ્ધતિઓને નહીં.

જો તેઓએ આ પદ્ધતિને index() નામ આપ્યું હોત, તો તે ઓછી ગૂંચવણભરી હોત ;-)

એ પણ ધ્યાનમાં રાખો કે enum મૂલ્યો (અને દેખીતી રીતે આ "ઇન્ડેક્સ") 0 થી શરૂ થાય છે, X++ માં એરે અને કન્ટેનર ઇન્ડેક્સ 1 થી શરૂ થાય છે તેનાથી વિપરીત, તેથી enum માં તત્વોને લૂપ કરવા માટે તમે કંઈક આ રીતે કરી શકો છો:

DictEnum dictEnum = new DictEnum(enumNum(SalesStatus));
Counter  c;
;

for (c = 0; c < dictEnum.values(); c++)
{
    info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}

આ enum માં દરેક એલિમેન્ટના સિમ્બોલ અને લેબલને ઇન્ફોલોગમાં આઉટપુટ કરશે.

વધુ વાંચન

જો તમને આ પોસ્ટ ગમી હોય, તો તમને આ સૂચનો પણ ગમશે:


બ્લુસ્કી પર શેર કરોફેસબુક પર શેર કરોLinkedIn પર શેર કરોટમ્બલર પર શેર કરોX પર શેર કરોLinkedIn પર શેર કરોPinterest પર પિન કરો

મિકેલ ક્રિસ્ટેનસેન

લેખક વિશે

મિકેલ ક્રિસ્ટેનસેન
મિકેલ miklix.com ના સર્જક અને માલિક છે. તેમને એક વ્યાવસાયિક કમ્પ્યુટર પ્રોગ્રામર/સોફ્ટવેર ડેવલપર તરીકે 20 વર્ષથી વધુનો અનુભવ છે અને હાલમાં તેઓ એક મોટા યુરોપિયન IT કોર્પોરેશનમાં પૂર્ણ-સમય કાર્યરત છે. જ્યારે તેઓ બ્લોગિંગ કરતા નથી, ત્યારે તેઓ પોતાનો ફાજલ સમય વિવિધ રુચિઓ, શોખ અને પ્રવૃત્તિઓ પર વિતાવે છે, જે આ વેબસાઇટ પર આવરી લેવામાં આવેલા વિવિધ વિષયોમાં પ્રતિબિંબિત થઈ શકે છે.