ଡାଇନାମିକ୍ସ AX 2012 ରେ X++ କୋଡ୍ ରୁ ଏକ ଏନୁମ୍ ର ଉପାଦାନଗୁଡିକ ଉପରେ କିପରି ଇଟେରେଟ୍ କରିବେ
ପ୍ରକାଶିତ: 11:16:05 PM UTC ଠାରେ ଫେବୃଆରୀ 15, 2025
ଶେଷ ଥର ପାଇଁ ଅଦ୍ୟତନ ହୋଇଥିଲା: 8:42:27 AM UTC ଠାରେ ଜାନୁଆରୀ 12, 2026
ଏହି ଆର୍ଟିକିଲ୍ ବ୍ୟାଖ୍ୟା କରେ ଯେ Dynamics AX 2012 ରେ ଏକ X++ କୋଡ୍ ଉଦାହରଣ ସହିତ ଏକ ବେସ୍ enum ର ଉପାଦାନଗୁଡ଼ିକୁ କିପରି ଗଣନା ଏବଂ ଲୁପ୍ କରାଯିବ।
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
ଏହି ପୋଷ୍ଟରେ ଥିବା ସୂଚନା ଡାଇନାମିକ୍ସ AX 2012 R3 ଉପରେ ଆଧାରିତ। ଏହା ଅନ୍ୟ ସଂସ୍କରଣ ପାଇଁ ବୈଧ ହୋଇପାରେ କିମ୍ବା ନ ହୋଇପାରେ।
ମୁଁ ସମ୍ପ୍ରତି ଏକ ଫର୍ମ ତିଆରି କରୁଥିଲି ଯାହା ଏକ enum ରେ ପ୍ରତ୍ୟେକ ଉପାଦାନ ପାଇଁ ଏକ ମୂଲ୍ୟ ପ୍ରଦର୍ଶନ କରିବା ଆବଶ୍ୟକ କରୁଥିଲା। କ୍ଷେତ୍ରଗୁଡ଼ିକୁ ମାନୁଆଲୀ ତିଆରି କରିବା (ଏବଂ ଯଦି enum କେବେ ପରିବର୍ତ୍ତନ କରାଯାଏ ତେବେ ଫର୍ମକୁ ବଜାୟ ରଖିବା ଆବଶ୍ୟକ) ପରିବର୍ତ୍ତେ, ମୁଁ ଏହାକୁ ଗତିଶୀଳ ଭାବରେ କାର୍ଯ୍ୟକାରୀ କରିବାକୁ ନିଷ୍ପତ୍ତି ନେଇଥିଲି ଯାହା ଦ୍ଵାରା ଏହା ରନ୍ ସମୟରେ ଡିଜାଇନରେ ସ୍ୱୟଂଚାଳିତ ଭାବରେ କ୍ଷେତ୍ରଗୁଡ଼ିକୁ ଯୋଡିବ।
ତଥାପି, ମୁଁ ଶୀଘ୍ର ଆବିଷ୍କାର କଲି ଯେ ପ୍ରକୃତରେ ଏକ enum ରେ ମୂଲ୍ୟଗୁଡ଼ିକ ଉପରେ ପୁନରାବୃତ୍ତି କରିବା, ଯଦିଓ ଆପଣ କିପରି ଜାଣିଛନ୍ତି ତାହା ଯଥେଷ୍ଟ ସହଜ, ଟିକେ ଦ୍ୱନ୍ଦ୍ୱପୂର୍ଣ୍ଣ।
ଆପଣଙ୍କୁ ସ୍ପଷ୍ଟ ଭାବରେ DictEnum ଶ୍ରେଣୀ ସହିତ ଆରମ୍ଭ କରିବାକୁ ପଡିବ। ଆପଣ ଦେଖିବେ, ଏହି ଶ୍ରେଣୀରେ ଇଣ୍ଡେକ୍ସ ଏବଂ ମୂଲ୍ୟ ଉଭୟରୁ ନାମ ଏବଂ ଲେବଲ୍ ଭଳି ସୂଚନା ପାଇବା ପାଇଁ ଅନେକ ପଦ୍ଧତି ଅଛି।
ସୂଚକାଙ୍କ ଏବଂ ମୂଲ୍ୟ ମଧ୍ୟରେ ପାର୍ଥକ୍ୟ ହେଉଛି ସୂଚକାଙ୍କ ହେଉଛି enum ରେ ଏକ ଉପାଦାନର ସଂଖ୍ୟା, ଯଦି enum ର ଉପାଦାନଗୁଡ଼ିକୁ ଶୂନ୍ୟରୁ ଆରମ୍ଭ କରି କ୍ରମାନୁସାରେ ସଂଖ୍ୟା ଦିଆଯାଇଥାଏ, ଯେତେବେଳେ value ହେଉଛି ଉପାଦାନର ପ୍ରକୃତ "ମୂଲ୍ୟ" ଗୁଣଧର୍ମ। ଯେହେତୁ ଅଧିକାଂଶ enum ଗୁଡ଼ିକର ମୂଲ୍ୟ 0 ରୁ କ୍ରମାନୁସାରେ ସଂଖ୍ୟାଯୁକ୍ତ ହୋଇଥାଏ, ଏକ ଉପାଦାନର ସୂଚକାଙ୍କ ଏବଂ ମୂଲ୍ୟ ପ୍ରାୟତଃ ସମାନ ହେବ, କିନ୍ତୁ ନିଶ୍ଚିତ ଭାବରେ ସର୍ବଦା ନୁହେଁ।
କିନ୍ତୁ ଆପଣ କିପରି ଜାଣିବେ ଯେ ଏକ enum ର କେଉଁ ମୂଲ୍ୟ ଅଛି? ଏହିଠାରେ ଏହା ଦ୍ୱନ୍ଦ୍ୱ ସୃଷ୍ଟି କରେ। DictEnum ଶ୍ରେଣୀର values() ନାମକ ଏକ ପଦ୍ଧତି ଅଛି। ଆପଣ ଆଶା କରିପାରନ୍ତି ଯେ ଏହି ପଦ୍ଧତି enum ର ମୂଲ୍ୟଗୁଡ଼ିକର ଏକ ତାଲିକା ଫେରାଇବ, କିନ୍ତୁ ଏହା ସ୍ପଷ୍ଟ ଭାବରେ ବହୁତ ସହଜ ହେବ, ତେଣୁ ଏହା enum ଧାରଣ କରିଥିବା ମୂଲ୍ୟଗୁଡ଼ିକର ସଂଖ୍ୟା ଫେରାଇ ଆଣେ। ତଥାପି, ମୂଲ୍ୟଗୁଡ଼ିକର ସଂଖ୍ୟାର ପ୍ରକୃତ ମୂଲ୍ୟ ସହିତ କୌଣସି ସମ୍ପର୍କ ନାହିଁ, ତେଣୁ ଆପଣଙ୍କୁ ଏହି ସଂଖ୍ୟାକୁ ଇଣ୍ଡେକ୍ସ-ଆଧାରିତ ପଦ୍ଧତିଗୁଡ଼ିକୁ ଡାକିବା ପାଇଁ ଏକ ଆଧାର ଭାବରେ ବ୍ୟବହାର କରିବାକୁ ପଡିବ, ମୂଲ୍ୟ-ଆଧାରିତ ପଦ୍ଧତିଗୁଡ଼ିକୁ ନୁହେଁ।
ଯଦି ସେମାନେ ଏହି ପଦ୍ଧତିକୁ indexes() ନାମ ଦେଇଥାନ୍ତେ, ତେବେ ଏହା କମ୍ ଦ୍ୱନ୍ଦ୍ୱପୂର୍ଣ୍ଣ ହୋଇଥାନ୍ତା ;-)
ଏହା ମଧ୍ୟ ମନେ ରଖନ୍ତୁ ଯେ enum ମୂଲ୍ୟଗୁଡ଼ିକ (ଏବଂ ସ୍ପଷ୍ଟ ଭାବରେ ଏହି "ଇଣ୍ଡେକ୍ସଗୁଡ଼ିକ") 0 ରୁ ଆରମ୍ଭ ହୁଏ, X++ ରେ ଆରେ ଏବଂ କଣ୍ଟେନର ଇଣ୍ଡେକ୍ସ 1 ରୁ ଆରମ୍ଭ ହୁଏ, ତେଣୁ ଏକ enum ରେ ଉପାଦାନଗୁଡ଼ିକୁ ଲୁପ୍ କରିବା ପାଇଁ ଆପଣ ଏପରି କିଛି କରିପାରିବେ:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
ଏହା enum ରେ ଥିବା ପ୍ରତ୍ୟେକ ଏଲିମେଣ୍ଟର ପ୍ରତୀକ ଏବଂ ଲେବଲ୍ infolog କୁ ଆଉଟପୁଟ୍ କରିବ।
ଅଧିକ ପଠନ
ଯଦି ଆପଣ ଏହି ପୋଷ୍ଟକୁ ଉପଭୋଗ କରିଛନ୍ତି, ତେବେ ଆପଣଙ୍କୁ ଏହି ପରାମର୍ଶଗୁଡ଼ିକ ମଧ୍ୟ ପସନ୍ଦ ଆସିପାରେ:
- ଡାଇନାମିକ୍ସ AX 2012 ରେ ତ୍ରୁଟି "ଡାଟା ଚୁକ୍ତିଅବଜେକ୍ଟ ପାଇଁ କୌଣସି ମେଟାଡାଟା ଶ୍ରେଣୀ ନିର୍ଦ୍ଦିଷ୍ଟ ନାହିଁ"
- ଡାଇନାମିକ୍ସ AX 2012 ରେ AIF ସେବା ପାଇଁ ଡକ୍ୟୁମେଣ୍ଟ ଶ୍ରେଣୀ ଏବଂ ପ୍ରଶ୍ନ ଚିହ୍ନଟ କରିବା
- ଡାଇନାମିକ୍ସ AX 2012 ରେ ଡାଟା () ଏବଂ buf2Buf() ମଧ୍ୟରେ ପାର୍ଥକ୍ୟ
