Miklix

Dynamics AX 2012 ရှိ SysOperation Data Contract Class တွင် Query တစ်ခုကို အသုံးပြုခြင်း။

ထုတ်ဝေသည်- ၂၀၂၅၊ ဖေဖော်ဝါရီ ၁၆ UTC ၀၁:၂၇:၅၇
နောက်ဆုံး မွမ်းမံပြင်ဆင်သည်- ၂၀၂၆၊ ဇန်နဝါရီ ၁၂ UTC ၀၈:၄၇:၄၃

ဤဆောင်းပါးသည် Dynamics AX 2012 (နှင့် Dynamics 365 for Operations) ရှိ SysOperation data contract class သို့ user-configure လုပ်နိုင်သော နှင့် filter လုပ်နိုင်သော query တစ်ခုကို မည်သို့ထည့်သွင်းရမည်ကို အသေးစိတ်ဖော်ပြထားပါသည်။


ဤစာမျက်နှာကို လူများတတ်နိုင်သမျှ ဝင်ရောက်ကြည့်ရှုနိုင်စေရန်အတွက် ဤစာမျက်နှာကို အင်္ဂလိပ်မှ စက်ဖြင့် ဘာသာပြန်ထားခြင်းဖြစ်ပါသည်။ ကံမကောင်းစွာဖြင့်၊ စက်ဘာသာပြန်ခြင်းသည် ပြီးပြည့်စုံသောနည်းပညာမဟုတ်သေးသောကြောင့် အမှားအယွင်းများဖြစ်ပေါ်လာနိုင်သည်။ သင်နှစ်သက်ပါက မူရင်းအင်္ဂလိပ်ဗားရှင်းကို ဤနေရာတွင် ကြည့်ရှုနိုင်ပါသည်။

Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012

ဤပို့စ်ရှိ အချက်အလက်များသည် Dynamics AX 2012 R3 ကို အခြေခံထားပါသည်။ အခြားဗားရှင်းများအတွက် မှန်ကန်နိုင်သည် သို့မဟုတ် မမှန်ကန်နိုင်ပါ။ (အပ်ဒိတ်- ၎င်းသည် Dynamics 365 for Operations တွင်လည်း အလုပ်လုပ်ကြောင်း ကျွန်ုပ် အတည်ပြုနိုင်ပါသည်)

SysOperation framework မှာ query တစ်ခုကို ဘယ်လို specify လုပ်ပြီး initialize လုပ်ရမလဲဆိုတဲ့ အသေးစိတ်အချက်အလက်တွေကို ကျွန်တော် အမြဲမေ့နေတတ်ပါတယ်။ ကျွန်တော်လုပ်နေတဲ့ batch job အများစုဟာ user-configurable query တွေအပေါ် အခြေခံထားတာမဟုတ်ပေမယ့် တစ်ခါတစ်ရံမှာ ဒီလို batch job မျိုးကို လုပ်ရတာကြောင့် ဒီ post ကလည်း ကျွန်တော့်ရဲ့ reference အတွက်ပါ။

ပထမဦးစွာ၊ data contract class မှာ၊ query ကို string တစ်ခုထဲမှာ packed သိမ်းဆည်းထားမှာပါ။ သူ့ရဲ့ parm method ကို AifQueryTypeAttribute attribute နဲ့ အလှဆင်ထားရပါမယ်၊ ဒီလိုပါပဲ (ဒီဥပမာမှာ SalesUpdate query ကို သုံးထားပါတယ်၊ ဒါပေမယ့် ဒါကို ဘယ် AOT query နဲ့မဆို အစားထိုးနိုင်ပါတယ်):

[
    DataMemberAttribute,
    AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
    ;

    packedQuery = _packedQuery;
    return packedQuery;
}

controller class မှ query ကို ဆုံးဖြတ်စေလိုပါက empty string ကိုလည်း အသုံးပြုနိုင်ပါသည်။ ထိုသို့ဆိုလျှင် helper method အချို့ကို အကောင်အထည်ဖော်ရန် လိုအပ်ပါသည် (query ကို ဝင်ရောက်ကြည့်ရှုရန် လိုအပ်သည့်အခါတွင် သင့်ကိုယ်ပိုင်အဆင်ပြေစေရန် မည်သို့ပင်ဖြစ်စေ အကောင်အထည်ဖော်သင့်သည်)။

public Query getQuery()
{
    ;

    return new Query(SysOperationHelper::base64Decode(packedQuery));
}

public void setQuery(Query _query)
{
    ;

    packedQuery = SysOperationHelper::base64Encode(_query.pack());
}

query ကို initialize လုပ်ရန် လိုအပ်ပါက (ဥပမာ၊ range များထည့်ရန်)၊ initQuery method ကို implement လုပ်သင့်သည်။

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

ဒီ method ကို controller class ကနေ call လုပ်ဖို့ သေချာအောင်လုပ်ဖို့ လိုပါတယ်။

နောက်ထပ်စာဖတ်ခြင်း။

ဤပို့စ်ကို သင်နှစ်သက်ပါက၊ ဤအကြံပြုချက်များကို သင်လည်း နှစ်သက်နိုင်ပါသည်-


Bluesky တွင်မျှဝေပါ။Facebook တွင်မျှဝေပါ။LinkedIn တွင်မျှဝေပါ။Tumblr တွင်မျှဝေပါ။X တွင်မျှဝေပါ။LinkedIn တွင်မျှဝေပါ။ပင်တရက်စ်တွင် ပင်ထားပါ

Mikkel Christensen

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

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