ডায়নামিক্স এএক্স 2012 এ এক্স ++ কোড থেকে একটি এনামের উপাদানগুলির উপর কীভাবে পুনরাবৃত্তি করবেন
প্রকাশিত: ১৫ ফেব্রুয়ারী, ২০২৫ এ ১১:১১:১৫ PM UTC
সর্বশেষ আপডেট: ১২ জানুয়ারী, ২০২৬ এ ৮:৪২:১৪ AM UTC
এই নিবন্ধটি ব্যাখ্যা করে যে Dynamics AX 2012-এ একটি বেস এনামের উপাদানগুলিকে কীভাবে গণনা করতে হয় এবং লুপ করতে হয়, যার মধ্যে একটি X++ কোড উদাহরণও অন্তর্ভুক্ত রয়েছে।
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
এই পোস্টের তথ্য Dynamics AX 2012 R3 এর উপর ভিত্তি করে তৈরি। এটি অন্যান্য সংস্করণের জন্য বৈধ হতে পারে আবার নাও হতে পারে।
আমি সম্প্রতি একটি ফর্ম তৈরি করছিলাম যাতে একটি এনামের প্রতিটি উপাদানের জন্য একটি মান প্রদর্শন করা প্রয়োজন ছিল। ক্ষেত্রগুলি ম্যানুয়ালি তৈরি করার পরিবর্তে (এবং তারপর এনামটি কখনও পরিবর্তন করা হলে ফর্মটি বজায় রাখার প্রয়োজন), আমি এটিকে গতিশীলভাবে বাস্তবায়ন করার সিদ্ধান্ত নিয়েছি যাতে এটি রান টাইমে স্বয়ংক্রিয়ভাবে ক্ষেত্রগুলি ডিজাইনে যুক্ত করতে পারে।
যাইহোক, আমি শীঘ্রই আবিষ্কার করলাম যে আসলে একটি enum-এর মানগুলির উপর পুনরাবৃত্তি করা, যদিও আপনি কীভাবে তা জানার পরে যথেষ্ট সহজ, কিছুটা বিভ্রান্তিকর।
আপনাকে অবশ্যই DictEnum ক্লাস দিয়ে শুরু করতে হবে। আপনি দেখতে পাবেন, এই ক্লাসে সূচক এবং মান উভয় থেকে নাম এবং লেবেলের মতো তথ্য সংগ্রহের জন্য বেশ কয়েকটি পদ্ধতি রয়েছে।
সূচক এবং মানের মধ্যে পার্থক্য হল যে সূচক হল enum-এ একটি উপাদানের সংখ্যা, যদি enum-এর উপাদানগুলিকে শূন্য থেকে শুরু করে ক্রমানুসারে সংখ্যাযুক্ত করা হয়, যখন value হল উপাদানের প্রকৃত "মান" বৈশিষ্ট্য। যেহেতু বেশিরভাগ enum-এর মান 0 থেকে ক্রমানুসারে সংখ্যাযুক্ত থাকে, তাই একটি উপাদানের সূচক এবং মান প্রায়শই একই হবে, তবে অবশ্যই সবসময় নয়।
কিন্তু আপনি কিভাবে বুঝবেন যে একটি enum-এর কোন মান আছে? এখানেই ব্যাপারটা বিভ্রান্তিকর হয়ে ওঠে। DictEnum ক্লাসের values() নামক একটি পদ্ধতি আছে। আপনি হয়তো আশা করতে পারেন যে এই পদ্ধতিটি enum-এর মানগুলির একটি তালিকা প্রদান করবে, কিন্তু এটি স্পষ্টতই খুব সহজ হবে, তাই এটি enum-এ থাকা মানগুলির সংখ্যা প্রদান করে। যাইহোক, মানগুলির সংখ্যার সাথে প্রকৃত মানের কোনও সম্পর্ক নেই, তাই আপনাকে সূচক-ভিত্তিক পদ্ধতিগুলিকে কল করার জন্য এই সংখ্যাটি ব্যবহার করতে হবে, মান-ভিত্তিক পদ্ধতিগুলিকে নয়।
যদি তারা এই পদ্ধতির নাম index() রাখত, তাহলে এটি কম বিভ্রান্তিকর হত ;-)
মনে রাখবেন যে 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-এর প্রতিটি উপাদানের প্রতীক এবং লেবেল ইনফোলগে আউটপুট করবে।
আরও পড়ুন
যদি আপনি এই পোস্টটি উপভোগ করেন, তাহলে আপনার এই পরামর্শগুলিও পছন্দ হতে পারে:
- Dynamics AX 2012-এ একটি আইনি সত্তা (কোম্পানির অ্যাকাউন্ট) মুছে ফেলুন
- ডায়নামিক্স এএক্স 2012 এ এআইএফ পরিষেবার জন্য ডকুমেন্ট ক্লাস এবং ক্যোয়ারী সনাক্তকরণ
- ডায়নামিক্স এএক্স 2012 এ ডেটা () এবং বিইউএফ 2 বুফ () এর মধ্যে পার্থক্য
