Miklix

ଡାଇନାମିକ୍ସ AX 2012 ରେ ମାକ୍ରୋ ଏବଂ strFmt ସହ ଷ୍ଟ୍ରିଙ୍ଗ ଫର୍ମାଟିଂ

ପ୍ରକାଶିତ: 12:51:53 AM UTC ଠାରେ ଫେବୃଆରୀ 16, 2025

ଏହି ପ୍ରବନ୍ଧରେ ଡାଇନାମିକ୍ସ AX 2012 ରେ କିଛି ଅଦ୍ଭୁତ ଆଚରଣ ବର୍ଣ୍ଣନା କରାଯାଇଛି ଯେତେବେଳେ ଏସଟିଆରଏଫଏମଟିରେ ଫର୍ମାଟ ଷ୍ଟ୍ରିଂ ଭାବରେ ଏକ ମାକ୍ରୋ ବ୍ୟବହାର କରିବା ସହିତ ଏହା ଉପରେ କିପରି କାର୍ଯ୍ୟ କରାଯିବ ସେ ବିଷୟରେ ଉଦାହରଣ।


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

String Formatting with Macro and strFmt in Dynamics AX 2012

ଏହି ପୋଷ୍ଟରେ ଥିବା ସୂଚନା ଡାଇନାମିକ୍ସ ଏଏକ୍ସ ୨୦୧୨ ଆର୩ ଉପରେ ଆଧାରିତ । ଏହା ଅନ୍ୟ ସଂସ୍କରଣ ପାଇଁ ବୈଧ ହୋଇପାରେ କିମ୍ବା ହୋଇନପାରେ।

ମୁଁ ନିକଟରେ ଏସଟିଆରଏଫଏମଟି ପ୍ରକାର୍ଯ୍ୟରେ ଏକ ସମସ୍ୟାର ସମ୍ମୁଖୀନ ହୋଇଥିଲି ଯାହା ମୋତେ କିଛି ସମୟ ପାଇଁ ଆଶ୍ଚର୍ଯ୍ୟ କରିଥିଲା | ସବୁଠାରୁ ଆଶ୍ଚର୍ଯ୍ୟଜନକ କଥା ହେଉଛି ମୁଁ ଏକ ଅଦ୍ଭୁତ ସୌଭାଗ୍ୟରେ ଏହା ପୂର୍ବରୁ ଆକ୍ସାପ୍ଟା / ଡାଇନାମିକ୍ସ ଏଏକ୍ସ ଡେଭଲପର ଭାବରେ ମୋର ଅନେକ ବର୍ଷ ମଧ୍ୟରେ ଏହାର ସମ୍ମୁଖୀନ ହୋଇନଥିଲି |

ସମସ୍ୟା ଟି ଥିଲା ଯେ ମୁଁ ଏସଟିଆରଏଫଏମଟି ପ୍ରକାର୍ଯ୍ୟ ପାଇଁ ଫର୍ମାଟ ଷ୍ଟ୍ରିଂ ଭାବରେ ଏକ ମାକ୍ରୋ ବ୍ୟବହାର କରିବାକୁ ଚେଷ୍ଟା କଲି ଏବଂ ଏହା କେବଳ କାମ କରିନଥିଲା । ଏହା % ପାରାମିଟରକୁ ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ଅଣଦେଖା କରିଥିଲା ଏବଂ କେବଳ ଅବଶିଷ୍ଟ ଷ୍ଟ୍ରିଙ୍ଗକୁ ଫେରାଇ ଦେଇଥିଲା।

ଏହାକୁ ଅନୁଧ୍ୟାନ କରିବା ପରେ, ମୁଁ ଆବିଷ୍କାର କଲି ଯେ ଷ୍ଟ୍ରିଙ୍ଗ୍ ଫର୍ମାଟ୍ କରିବା ପାଇଁ ମାକ୍ରୋସ୍ ନିଜେ ବ୍ୟବହାର କରାଯାଇପାରିବ, ଯାହା ମଧ୍ୟ ମୁଁ ଜାଣିନଥିଲି । ଓହ ହଁ, କିଛି ନୂଆ ଶିଖିବା ସବୁବେଳେ ଭଲ, କିନ୍ତୁ ମୁଁ ତଥାପି ବହୁତ ଆଶ୍ଚର୍ଯ୍ୟ ହୋଇଥିଲି ଯେ ମୁଁ ପୂର୍ବରୁ ଏହା ଦେଖିନଥିଲି |

ମୂଳତଃ, ଏପରି କିଛି

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

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

କାର୍ଯ୍ୟ କରିବ ନାହିଁ କାରଣ ମାକ୍ରୋରେ % ସଙ୍କେତଗୁଡିକ ପ୍ରକୃତରେ ମାକ୍ରୋର ନିଜସ୍ୱ ଷ୍ଟ୍ରିଙ୍ଗ ଫର୍ମାଟିଂ ବୈଶିଷ୍ଟ୍ୟ ଗୁଡିକ ପାଇଁ ବ୍ୟବହୃତ ହୁଏ। ଏହି କ୍ଷେତ୍ରରେ, ଏସଟିଆରଏଫଏମଟି ପ୍ରକାର୍ଯ୍ୟ ଫର୍ମାଟିଂ ଷ୍ଟ୍ରିଂକୁ "-- " ଭାବରେ ଦେଖିବ ଏବଂ ତେଣୁ କେବଳ ଏହାକୁ ଫେରାଇଦେବ।

ଏମିତି କିଛି:

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

କାମ କରିବ, କିନ୍ତୁ ବୋଧହୁଏ ଆପଣ ଚାହୁଁଥିବା ଭଳି ନୁହେଁ। ତିନୋଟି ଭରିଏବଲ୍ ର ମୂଲ୍ୟ ଉତ୍ପାଦନ କରିବା ପରିବର୍ତ୍ତେ, ଏହା ପରିବର୍ତ୍ତେ ଭେରିଏବଲ୍ ଗୁଡ଼ିକର ନାମ ଆଉଟପୁଟ୍ କରିବ, ଏହି କ୍ଷେତ୍ରରେ "ସେଲ୍ସଆଇଡି-ଆଇଟମ୍ ଆଇଡି-ଲାଇନ୍ନମ୍"। (ଧ୍ୟାନ ଦିଅନ୍ତୁ ଯେ ମୁଁ ସାଧାରଣତଃ ପଦ୍ଧତି କଲ୍ ରେ ପରି ମାକ୍ରୋକୁ ପାରାମିଟର ପାସ୍ କରିବା ସମୟରେ କୋମା ପରେ ସ୍ଥାନ ରଖିନଥିଲି। ଏହାର କାରଣ ହେଉଛି ମାକ୍ରୋ ପ୍ରକୃତରେ ଏପରି ସ୍ଥାନଗୁଡିକ ମଧ୍ୟ ବ୍ୟବହାର କରିବ, ତେଣୁ ଯଦି ମୁଁ ଏହା କରେ ତେବେ ଆଉଟପୁଟ୍ ହେବ "ସେଲ୍ସଆଇଡି- ଆଇଟମଆଇଡି- ଲାଇନନମ୍")।

ପ୍ରକୃତରେ strFMT ସହିତ ଫର୍ମାଟିଂ ଷ୍ଟ୍ରିଂ ଭାବରେ ଏକ ମାକ୍ରୋ ବ୍ୟବହାର କରିବାକୁ, ଆପଣଙ୍କୁ ଏହି ପରି ବ୍ୟାକ୍ ସ୍ଲାସ୍ ସହିତ ପ୍ରତିଶତ ସଙ୍କେତଗୁଡିକରୁ ବର୍ତ୍ତିବା ଆବଶ୍ୟକ:

#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));
}
ବ୍ଲୁସ୍କିରେ ସେୟାର କରନ୍ତୁଫେସବୁକରେ ସେୟାର କରନ୍ତୁଲିଙ୍କଡିନ୍‌ରେ ସେୟାର୍‌ କରନ୍ତୁଟମ୍ବଲରରେ ସେୟାର କରନ୍ତୁX ରେ ସେୟାର କରନ୍ତୁଲିଙ୍କଡିନ୍‌ରେ ସେୟାର୍‌ କରନ୍ତୁପିନ୍ଟରେଷ୍ଟରେ ପିନ୍ କରନ୍ତୁ

ମିକେଲ୍ ବାଙ୍ଗ୍ କ୍ରିଷ୍ଟେନସେନ୍

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

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