Dynamics AX 2012 တွင် Macro နှင့် strFmt ဖြင့် စာကြောင်းဖော်မတ်ခြင်း။
ထုတ်ဝေသည်- ၂၀၂၅၊ ဖေဖော်ဝါရီ ၁၆ UTC ၀၀:၅၃:၀၃
ဤဆောင်းပါးသည် strFmt ရှိ မက်ခရိုပုံစံစာကြောင်းအဖြစ် အသုံးပြုသည့်အခါ Dynamics AX 2012 တွင် ထူးခြားသောအပြုအမူအချို့နှင့် ၎င်းကို မည်သို့လုပ်ဆောင်ရမည်ကို ဥပမာများဖြင့် ဖော်ပြထားပါသည်။
String Formatting with Macro and strFmt in Dynamics AX 2012
ဤပို့စ်ရှိ အချက်အလက်သည် Dynamics AX 2012 R3 ကို အခြေခံထားသည်။ ၎င်းသည် အခြားဗားရှင်းများအတွက် တရားဝင်နိုင်သည် သို့မဟုတ် မမှန်နိုင်ပါ။
မကြာသေးမီက ကျွန်ုပ်သည် ကျွန်ုပ်အား အနည်းငယ် စိတ်ရှုပ်စေသော strFmt လုပ်ဆောင်ချက်နှင့် ပြဿနာတစ်ခု ကြုံတွေ့ခဲ့ရသည်။ အံသြစရာအကောင်းဆုံးအပိုင်းကတော့ Axapta/Dynamics AX developer တစ်ယောက်အနေနဲ့ ကျွန်တော့်ရဲ့နှစ်ပေါင်းများစွာအတွင်း ထူးဆန်းတဲ့တိုက်ဆိုင်မှုမျိုးနဲ့ တစ်ခါမှမကြုံခဲ့ဖူးလို့ပါပဲ။
ပြဿနာမှာ strFmt လုပ်ဆောင်ချက်အတွက် ဖော်မတ်စာတန်းအဖြစ် မက်ခရိုကို အသုံးပြုရန် ကြိုးစားခဲ့သော်လည်း အဆင်မပြေခဲ့ပါ။ ၎င်းသည် % ဘောင်များကို လုံး၀ လျစ်လျူရှုပြီး ကျန်ရှိသော စာကြောင်းများကိုသာ ပြန်ပေးသည်။
၎င်းကိုရှာဖွေပြီးနောက်၊ မက်ခရိုများကို ၎င်းတို့ကိုယ်တိုင် မျဉ်းကြောင်းများဖော်မတ်ရန်အတွက် အသုံးပြုနိုင်ကြောင်းကို ကျွန်ုပ်မသိခဲ့ပါ။ အိုး၊ အသစ်အဆန်းတွေကို သင်ယူရတာ အမြဲတမ်းကောင်းပါတယ်၊ ဒါပေမယ့် အရင်က ဒီလိုကြုံလာရတာမျိုး မဖြစ်ခဲ့ဘူးလို့ အရမ်းအံ့သြမိပါသေးတယ်။
အခြေခံအားဖြင့်၊ ဤကဲ့သို့သောအရာ
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
macro ရှိ % ဆိုင်းဘုတ်များသည် macro ၏ကိုယ်ပိုင် string ဖော်မတ်ချခြင်းအင်္ဂါရပ်များအတွက် အမှန်တကယ်အသုံးပြုသောကြောင့် အလုပ်မဖြစ်ပါ။ ဤကိစ္စတွင်၊ strFmt လုပ်ဆောင်ချက်သည် ဖော်မတ်ချသည့်စာကြောင်းကို "--" အဖြစ်မြင်ရမည်ဖြစ်ပြီး ထို့ကြောင့် ၎င်းကိုသာ ပြန်ပေးမည်ဖြစ်သည်။
ဤကဲ့သို့သော တစ်ခုခု-
info(#FormatMacro(salesId,itemId,lineNum));
အလုပ်ဖြစ်မည်၊ သို့သော် သင်လိုချင်သည့်ပုံစံမဟုတ်ပေ။ ကိန်းရှင်သုံးခု၏ တန်ဖိုးများကို ထုတ်မည့်အစား၊ ဤကိစ္စတွင် "salesId-itemId-lineNum" အစား variable များ၏ အမည်များကို ထုတ်ပေးလိမ့်မည်။ (ပုံမှန်အားဖြင့် method calls များတွင် လုပ်သကဲ့သို့ macro သို့ parameters များဆီသို့ parameter များဖြတ်သွားသောအခါ ကော်မာနောက်တွင် space များမထည့်ထားကြောင်း သတိပြုပါ။ အကြောင်းမှာ macro သည် ထို space များကို အမှန်တကယ်အသုံးပြုသောကြောင့်၊ ထို့ကြောင့် output သည် "salesId- itemId- lineNum" ဖြစ်လိမ့်မည်)။
strFmt ဖြင့် ဖော်မတ်ချသည့်စာကြောင်းအဖြစ် မက်ခရိုကို အမှန်တကယ်အသုံးပြုရန်၊ ဤကဲ့သို့သော backslashes ဖြင့် ရာခိုင်နှုန်းအမှတ်အသားများကို ရှောင်ရန် လိုအပ်သည်-
;
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));
}