Miklix

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 လုပ်ဆောင်ချက်အတွက် ဖော်မတ်စာတန်းအဖြစ် မက်ခရိုကို အသုံးပြုရန် ကြိုးစားခဲ့သော်လည်း အဆင်မပြေခဲ့ပါ။ ၎င်းသည် % ဘောင်များကို လုံး၀ လျစ်လျူရှုပြီး ကျန်ရှိသော စာကြောင်းများကိုသာ ပြန်ပေးသည်။

၎င်းကိုရှာဖွေပြီးနောက်၊ မက်ခရိုများကို ၎င်းတို့ကိုယ်တိုင် မျဉ်းကြောင်းများဖော်မတ်ရန်အတွက် အသုံးပြုနိုင်ကြောင်းကို ကျွန်ုပ်မသိခဲ့ပါ။ အိုး၊ အသစ်အဆန်းတွေကို သင်ယူရတာ အမြဲတမ်းကောင်းပါတယ်၊ ဒါပေမယ့် အရင်က ဒီလိုကြုံလာရတာမျိုး မဖြစ်ခဲ့ဘူးလို့ အရမ်းအံ့သြမိပါသေးတယ်။

အခြေခံအားဖြင့်၊ ဤကဲ့သို့သောအရာ

#define.FormatMacro('%1-%2-%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

macro ရှိ % ဆိုင်းဘုတ်များသည် macro ၏ကိုယ်ပိုင် string ဖော်မတ်ချခြင်းအင်္ဂါရပ်များအတွက် အမှန်တကယ်အသုံးပြုသောကြောင့် အလုပ်မဖြစ်ပါ။ ဤကိစ္စတွင်၊ strFmt လုပ်ဆောင်ချက်သည် ဖော်မတ်ချသည့်စာကြောင်းကို "--" အဖြစ်မြင်ရမည်ဖြစ်ပြီး ထို့ကြောင့် ၎င်းကိုသာ ပြန်ပေးမည်ဖြစ်သည်။

ဤကဲ့သို့သော တစ်ခုခု-

#define.FormatMacro('%1-%2-%3');
info(#FormatMacro(salesId,itemId,lineNum));

အလုပ်ဖြစ်မည်၊ သို့သော် သင်လိုချင်သည့်ပုံစံမဟုတ်ပေ။ ကိန်းရှင်သုံးခု၏ တန်ဖိုးများကို ထုတ်မည့်အစား၊ ဤကိစ္စတွင် "salesId-itemId-lineNum" အစား variable များ၏ အမည်များကို ထုတ်ပေးလိမ့်မည်။ (ပုံမှန်အားဖြင့် method calls များတွင် လုပ်သကဲ့သို့ macro သို့ parameters များဆီသို့ parameter များဖြတ်သွားသောအခါ ကော်မာနောက်တွင် space များမထည့်ထားကြောင်း သတိပြုပါ။ အကြောင်းမှာ macro သည် ထို space များကို အမှန်တကယ်အသုံးပြုသောကြောင့်၊ ထို့ကြောင့် output သည် "salesId- itemId- lineNum" ဖြစ်လိမ့်မည်)။

strFmt ဖြင့် ဖော်မတ်ချသည့်စာကြောင်းအဖြစ် မက်ခရိုကို အမှန်တကယ်အသုံးပြုရန်၊ ဤကဲ့သို့သော backslashes ဖြင့် ရာခိုင်နှုန်းအမှတ်အသားများကို ရှောင်ရန် လိုအပ်သည်-

#define.FormatMacro('\\%1-\\%2-\\%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

၎င်းသည် သင်သည် ဖော်မတ်စာတန်းကို တိုက်ရိုက် ပံ့ပိုးပေးထားသည့်အတိုင်း အမှန်တကယ် လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။

ဤအလုပ်လေးသည် ဥပမာများကို ဖော်ပြသည်။

static void StrFmtMacroTest(Args _args)
{
    #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));
}
Bluesky တွင်မျှဝေပါ။Facebook တွင်မျှဝေပါ။LinkedIn တွင်မျှဝေပါ။Tumblr တွင်မျှဝေပါ။X တွင်မျှဝေပါ။LinkedIn တွင်မျှဝေပါ။ပင်တရက်စ်တွင် ပင်ထားပါ

Mikkel Christensen

စာရေးသူအကြောင်း

Mikkel Christensen
မိုက်ကယ် သည် miklix.com ၏ ဖန်တီးရှင်နှင့် ပိုင်ရှင်ဖြစ်သည်။ သူသည် ပရော်ဖက်ရှင်နယ် ကွန်ပြူတာ ပရိုဂရမ်မာ/ဆော့ဖ်ဝဲလ် တီထွင်သူအဖြစ် နှစ်ပေါင်း 20 ကျော် အတွေ့အကြုံရှိပြီး ဥရောပ အိုင်တီကော်ပိုရေးရှင်းကြီးတစ်ခုတွင် လက်ရှိအချိန်ပြည့် အလုပ်ခန့်ထားသည်။ ဘလော့ဂ်မရေးဖြစ်သောအခါတွင် သူသည် ၎င်း၏အားလပ်ချိန်များကို စိတ်ဝင်စားမှု၊ ဝါသနာနှင့် လှုပ်ရှားမှုများစွာတွင် ဖြုန်းတီးခဲ့ပြီး၊ ဤဝဘ်ဆိုက်တွင် ဖော်ပြထားသော အကြောင်းအရာမျိုးစုံကို အတိုင်းအတာတစ်ခုအထိ ထင်ဟပ်စေနိုင်သည်။