Miklix

ডায়নামিক্স এএক্স 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 এর উপাদানগুলিকে লুপ করার জন্য আপনি এটির মতো কিছু করতে পারেন:

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-এর প্রতিটি উপাদানের প্রতীক এবং লেবেল ইনফোলগে আউটপুট করবে।

আরও পড়ুন

যদি আপনি এই পোস্টটি উপভোগ করেন, তাহলে আপনার এই পরামর্শগুলিও পছন্দ হতে পারে:


ব্লুস্কাইতে শেয়ার করুনফেসবুকে শেয়ার করুনলিংকডইনে শেয়ার করুনটাম্বলারে শেয়ার করুনX-এ শেয়ার করুনলিংকডইনে শেয়ার করুনপিন্টারেস্টে পিন করুন

মিকেল ক্রিস্টেনসেন

লেখক সম্পর্কে

মিকেল ক্রিস্টেনসেন
মিকেল হলেন miklix.com এর স্রষ্টা এবং মালিক। একজন পেশাদার কম্পিউটার প্রোগ্রামার/সফ্টওয়্যার ডেভেলপার হিসেবে তার ২০ বছরেরও বেশি অভিজ্ঞতা রয়েছে এবং বর্তমানে তিনি একটি বৃহৎ ইউরোপীয় আইটি কর্পোরেশনে পূর্ণকালীন কর্মরত। ব্লগিং না করার সময়, তিনি তার অবসর সময় বিভিন্ন আগ্রহ, শখ এবং কার্যকলাপে ব্যয় করেন, যা কিছুটা হলেও এই ওয়েবসাইটে কভার করা বিভিন্ন বিষয়ের মধ্যে প্রতিফলিত হতে পারে।