ডায়নামিক্স এএক্স 2012 এ ম্যাক্রো এবং স্ট্রএফএমটি সহ স্ট্রিং ফর্ম্যাটিং
প্রকাশিত: ১৬ ফেব্রুয়ারী, ২০২৫ এ ১২:৪৯:১৪ AM UTC
সর্বশেষ আপডেট: ১২ জানুয়ারী, ২০২৬ এ ৮:৪৪:৩৯ AM UTC
এই প্রবন্ধে strFmt-এ ফর্ম্যাট স্ট্রিং হিসেবে ম্যাক্রো ব্যবহার করার সময় Dynamics AX 2012-এর কিছু অদ্ভুত আচরণ বর্ণনা করা হয়েছে, সেইসাথে এটি কীভাবে কাজ করতে হয় তার উদাহরণও দেওয়া হয়েছে।
String Formatting with Macro and strFmt in Dynamics AX 2012
এই পোস্টের তথ্য Dynamics AX 2012 R3 এর উপর ভিত্তি করে তৈরি। এটি অন্যান্য সংস্করণের জন্য বৈধ হতে পারে আবার নাও হতে পারে।
সম্প্রতি আমি strFmt ফাংশনের সাথে একটি সমস্যার সম্মুখীন হয়েছি যা আমাকে কিছুক্ষণের জন্য বিভ্রান্ত করে তুলেছিল। সবচেয়ে অবাক করার বিষয় হল, Axapta/Dynamics AX ডেভেলপার হিসেবে আমার বহু বছরের অভিজ্ঞতায় আমি কখনও এর মুখোমুখি হইনি।
সমস্যাটি ছিল যে আমি strFmt ফাংশনের জন্য ফর্ম্যাট স্ট্রিং হিসেবে একটি ম্যাক্রো ব্যবহার করার চেষ্টা করেছি এবং এটি কাজ করেনি। এটি % প্যারামিটারগুলিকে সম্পূর্ণরূপে উপেক্ষা করেছে এবং শুধুমাত্র বাকি স্ট্রিংটি ফেরত দিয়েছে।
এটি খতিয়ে দেখার পর, আমি আবিষ্কার করলাম যে ম্যাক্রোগুলি নিজেই স্ট্রিং ফর্ম্যাট করতে ব্যবহার করা যেতে পারে, যা আমিও জানতাম না। আচ্ছা, নতুন কিছু শেখা সবসময়ই ভালো, কিন্তু আমি এখনও খুব অবাক হয়েছি যে আমি আগে কখনও এটির মুখোমুখি হইনি।
মূলত, এরকম কিছু
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
কাজ করবে না কারণ ম্যাক্রোতে % চিহ্নগুলি আসলে ম্যাক্রোর নিজস্ব স্ট্রিং ফর্ম্যাটিং বৈশিষ্ট্যগুলির জন্য ব্যবহৃত হয়। এই ক্ষেত্রে, strFmt ফাংশনটি ফর্ম্যাটিং স্ট্রিংটিকে "--" হিসাবে দেখবে এবং তাই কেবল এটিই ফেরত দেবে।
এরকম কিছু:
info(#FormatMacro(salesId,itemId,lineNum));
কাজ করবে, কিন্তু সম্ভবত আপনি যেভাবে চান সেভাবে নয়। তিনটি ভেরিয়েবলের মান আউটপুট করার পরিবর্তে, এটি ভেরিয়েবলের নাম আউটপুট করবে, এই ক্ষেত্রে "salesId-itemId-lineNum"। (লক্ষ্য করুন যে আমি ম্যাক্রোতে প্যারামিটার পাস করার সময় কমার পরে স্পেস রাখিনি, যেমনটি আমি সাধারণত মেথড কলে করি। কারণ ম্যাক্রো আসলে এই ধরনের স্পেস ব্যবহার করবে, তাই আউটপুট "salesId- itemId- lineNum" হবে যদি আমি করতাম)।
strFmt ব্যবহার করে ফর্ম্যাটিং স্ট্রিং হিসেবে ম্যাক্রো ব্যবহার করতে হলে, আপনাকে ব্যাকস্ল্যাশ ব্যবহার করে শতাংশ চিহ্নগুলি এড়িয়ে যেতে হবে, যেমন:
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
এটি আসলে এমনভাবে কাজ করবে যেন আপনি সরাসরি ফর্ম্যাট স্ট্রিং সরবরাহ করেছেন।
এই ছোট্ট কাজটি উদাহরণগুলি তুলে ধরে:
{
#define.FormatMacro('%1-%2-%3')
#define.FormatMacroEscaped('\\%1-\\%2-\\%3')
SalesId salesId = '1';
ItemId itemId = '2';
LineNum lineNum = 3.00;
;
info(#FormatMacro(salesId,itemId,lineNum));
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
info(strFmt(#FormatMacroEscaped, salesId, itemId, lineNum));
}
আরও পড়ুন
যদি আপনি এই পোস্টটি উপভোগ করেন, তাহলে আপনার এই পরামর্শগুলিও পছন্দ হতে পারে:
- ডায়নামিক্স এএক্স 2012 এ এক্স ++ কোড থেকে একটি এনামের উপাদানগুলির উপর কীভাবে পুনরাবৃত্তি করবেন
- ডায়নামিক্স এএক্স 2012 এ ডেটা () এবং বিইউএফ 2 বুফ () এর মধ্যে পার্থক্য
- Dynamics AX 2012-এ সকল দশমিক সংখ্যা সহ একটি বাস্তবকে স্ট্রিং-এ রূপান্তর করুন
