Miklix

ଡାଇନାମିକ୍ସ AX 2012 ରେ ଏକ SysOpation ଡାଟା ଚୁକ୍ତି ଶ୍ରେଣୀରେ ଏକ କ୍ୱେରୀ ବ୍ୟବହାର କରିବା

ପ୍ରକାଶିତ: 1:26:09 AM UTC ଠାରେ ଫେବୃଆରୀ 16, 2025
ଶେଷ ଥର ପାଇଁ ଅଦ୍ୟତନ ହୋଇଥିଲା: 8:47:40 AM UTC ଠାରେ ଜାନୁଆରୀ 12, 2026

ଏହି ଆର୍ଟିକିଲ୍ ଡାଇନାମିକ୍ସ AX 2012 (ଏବଂ ଅପରେସନ୍ସ ପାଇଁ ଡାଇନାମିକ୍ସ 365) ରେ ଏକ SysOperation ଡାଟା କଣ୍ଟ୍ରାକ୍ଟ କ୍ଲାସରେ ଏକ ୟୁଜର-କନଫିଗରେବଲ୍ ଏବଂ ଫିଲ୍ଟରେବଲ୍ କ୍ୱେରୀ କିପରି ଯୋଡିବେ ସେ ବିଷୟରେ ବିସ୍ତୃତ ବିବରଣୀ ପ୍ରଦାନ କରେ।


ଏହି ପୃଷ୍ଠାକୁ ଅଧିକରୁ ଅଧିକ ଲୋକଙ୍କ ପାଖରେ ପହଞ୍ଚାଇବା ପାଇଁ ଇଂରାଜୀରୁ ମେସିନ୍ ଅନୁବାଦ କରାଯାଇଥିଲା। ଦୁର୍ଭାଗ୍ୟବଶତଃ, ମେସିନ୍ ଅନୁବାଦ ଏପର୍ଯ୍ୟନ୍ତ ଏକ ସିଦ୍ଧ ପ୍ରଯୁକ୍ତିବିଦ୍ୟା ନୁହେଁ, ତେଣୁ ତ୍ରୁଟି ହୋଇପାରେ। ଯଦି ଆପଣ ଚାହାଁନ୍ତି, ତେବେ ଆପଣ ଏଠାରେ ମୂଳ ଇଂରାଜୀ ସଂସ୍କରଣ ଦେଖିପାରିବେ:

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

ଏହି ପୋଷ୍ଟରେ ଥିବା ସୂଚନା ଡାଇନାମିକ୍ସ AX 2012 R3 ଉପରେ ଆଧାରିତ। ଏହା ଅନ୍ୟ ସଂସ୍କରଣ ପାଇଁ ବୈଧ ହୋଇପାରେ କିମ୍ବା ନ ହୋଇପାରେ। (ଅପଡେଟ୍: ମୁଁ ନିଶ୍ଚିତ କରିପାରିବି ଯେ ଏହା ଅପରେସନ୍ ପାଇଁ ଡାଇନାମିକ୍ସ 365 ରେ ମଧ୍ୟ କାମ କରେ)

SysOperation ଫ୍ରେମୱାର୍କରେ ଏକ ପ୍ରଶ୍ନକୁ କିପରି ନିର୍ଦ୍ଦିଷ୍ଟ ଏବଂ ଆରମ୍ଭ କରିବେ ସେ ବିଷୟରେ ମୁଁ ସର୍ବଦା ଭୁଲିଯାଉଛି। ମୁଁ ଭାବୁଛି ଯେ ମୁଁ କରୁଥିବା ଅଧିକାଂଶ ବ୍ୟାଚ୍ କାର୍ଯ୍ୟଗୁଡ଼ିକ ବ୍ୟବହାରକାରୀ-ବିନ୍ୟାସଯୋଗ୍ୟ ପ୍ରଶ୍ନ ଉପରେ ଆଧାରିତ ନୁହେଁ, କିନ୍ତୁ ସମୟ ସମୟରେ ମୋତେ ଏପରି ଏକ ବ୍ୟାଚ୍ କାର୍ଯ୍ୟ କରିବାକୁ ପଡିବ, ତେଣୁ ଏହି ପୋଷ୍ଟଟି ମୋର ନିଜସ୍ୱ ସୂଚନା ପାଇଁ ମଧ୍ୟ।

ପ୍ରଥମେ, ଡାଟା କଣ୍ଟ୍ରାକ୍ଟ କ୍ଲାସରେ, କ୍ୱେରୀକୁ ଏକ ଷ୍ଟ୍ରିଙ୍ଗରେ ପ୍ୟାକ୍ କରି ସଂରକ୍ଷିତ କରାଯିବ। ଏହାର parm ପଦ୍ଧତିକୁ AifQueryTypeAttribute ଗୁଣ ସହିତ ସଜାଯିବା ଆବଶ୍ୟକ, ଯେପରିକି (ଏହି ଉଦାହରଣରେ ମୁଁ SalesUpdate କ୍ୱେରୀ ବ୍ୟବହାର କରିଛି, କିନ୍ତୁ ଆପଣ ଏହାକୁ ଯେକୌଣସି AOT କ୍ୱେରୀ ସହିତ ବଦଳାଇପାରିବେ):

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

    packedQuery = _packedQuery;
    return packedQuery;
}

ଯଦି ଆପଣ କୱେରୀଟି କଣ୍ଟ୍ରୋଲର କ୍ଲାସ୍ ଦ୍ୱାରା ନିଷ୍ପତ୍ତି ନେବାକୁ ଚାହାଁନ୍ତି, ତେବେ ଆପଣ ଏକ ଖାଲି ଷ୍ଟ୍ରିଙ୍ଗ ମଧ୍ୟ ବ୍ୟବହାର କରିପାରିବେ। ସେହି କ୍ଷେତ୍ରରେ, ଆପଣଙ୍କୁ କିଛି ସହାୟକ ପଦ୍ଧତି ମଧ୍ୟ କାର୍ଯ୍ୟକାରୀ କରିବାକୁ ପଡିବ (ଯାହା ଆପଣଙ୍କୁ କୱେରୀ ଆକ୍ସେସ୍ କରିବାକୁ ପଡିବ ସେତେବେଳେ ଆପଣଙ୍କର ସୁବିଧା ପାଇଁ ଯେକୌଣସି ଭାବରେ କାର୍ଯ୍ୟକାରୀ କରିବା ଉଚିତ):

public Query getQuery()
{
    ;

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

public void setQuery(Query _query)
{
    ;

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

ଯଦି ଆପଣଙ୍କୁ କ୍ୱେରୀ ଆରମ୍ଭ କରିବାକୁ ପଡିବ (ଉଦାହରଣ ସ୍ୱରୂପ, ପରିସର ଯୋଡନ୍ତୁ), ତେବେ ଆପଣଙ୍କୁ ଏକ initQuery ପଦ୍ଧତି କାର୍ଯ୍ୟକାରୀ କରିବା ଉଚିତ:

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

    // add ranges, etc...

    this.setQuery(queryLocal);
}

ଆପଣଙ୍କୁ ଏହି ପଦ୍ଧତିକୁ କଣ୍ଟ୍ରୋଲର କ୍ଲାସରୁ କଲ୍ କରିବାକୁ ନିଶ୍ଚିତ କରିବାକୁ ପଡିବ।

ଅଧିକ ପଠନ

ଯଦି ଆପଣ ଏହି ପୋଷ୍ଟକୁ ଉପଭୋଗ କରିଛନ୍ତି, ତେବେ ଆପଣଙ୍କୁ ଏହି ପରାମର୍ଶଗୁଡ଼ିକ ମଧ୍ୟ ପସନ୍ଦ ଆସିପାରେ:


ବ୍ଲୁସ୍କିରେ ସେୟାର କରନ୍ତୁଫେସବୁକରେ ସେୟାର କରନ୍ତୁଲିଙ୍କଡିନ୍‌ରେ ସେୟାର୍‌ କରନ୍ତୁଟମ୍ବଲରରେ ସେୟାର କରନ୍ତୁX ରେ ସେୟାର କରନ୍ତୁଲିଙ୍କଡିନ୍‌ରେ ସେୟାର୍‌ କରନ୍ତୁପିନ୍ଟରେଷ୍ଟରେ ପିନ୍ କରନ୍ତୁ

ମିକେଲ୍ କ୍ରିଷ୍ଟେନସେନ୍

ଲେଖକଙ୍କ ବିଷୟରେ

ମିକେଲ୍ କ୍ରିଷ୍ଟେନସେନ୍
ମିକେଲ୍ ହେଉଛନ୍ତି miklix.com ର ସୃଷ୍ଟିକର୍ତ୍ତା ଏବଂ ମାଲିକ। ତାଙ୍କର ଜଣେ ବୃତ୍ତିଗତ କମ୍ପ୍ୟୁଟର ପ୍ରୋଗ୍ରାମର/ସଫ୍ଟୱେର୍ ଡେଭଲପର ଭାବରେ 20 ବର୍ଷରୁ ଅଧିକ ଅଭିଜ୍ଞତା ଅଛି ଏବଂ ସେ ବର୍ତ୍ତମାନ ଏକ ବଡ଼ ୟୁରୋପୀୟ IT କର୍ପୋରେସନରେ ପୂର୍ଣ୍ଣକାଳୀନ ନିଯୁକ୍ତି ପାଇଛନ୍ତି। ବ୍ଲଗ୍ ନ ଲେଖିବା ସମୟରେ, ସେ ତାଙ୍କର ଖାଲି ସମୟ ବିଭିନ୍ନ ପ୍ରକାରର ଆଗ୍ରହ, ହବି ଏବଂ କାର୍ଯ୍ୟକଳାପରେ ବିତାଇଥାନ୍ତି, ଯାହା କିଛି ପରିମାଣରେ ଏହି ୱେବସାଇଟରେ ଆବୃତ ବିଭିନ୍ନ ବିଷୟଗୁଡ଼ିକରେ ପ୍ରତିଫଳିତ ହୋଇପାରେ।