Miklix

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

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

ଏହି ଆର୍ଟିକିଲ୍ strFmt ରେ ଫର୍ମାଟ୍ ଷ୍ଟ୍ରିଙ୍ଗ ଭାବରେ ଏକ ମାକ୍ରୋ ବ୍ୟବହାର କରିବା ସମୟରେ Dynamics AX 2012 ରେ କିଛି ଅଦ୍ଭୁତ ଆଚରଣ ବର୍ଣ୍ଣନା କରେ, ଏବଂ ଏହାକୁ କିପରି କାମ କରିବେ ତାହାର ଉଦାହରଣ ମଧ୍ୟ ଦିଏ।


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

String Formatting with Macro and strFmt in Dynamics AX 2012

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

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

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

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

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

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

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

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

ଏହିପରି କିଛି:

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

ଏହା କାମ କରିବ, କିନ୍ତୁ ହୁଏତ ଆପଣ ଯେପରି ଚାହୁଁଛନ୍ତି ସେପରି ନୁହେଁ। ତିନୋଟି ଭେରିଏବଲ୍‌ର ମୂଲ୍ୟଗୁଡ଼ିକୁ ଆଉଟପୁଟ୍ କରିବା ପରିବର୍ତ୍ତେ, ଏହା ଭେରିଏବଲ୍‌ର ନାମଗୁଡ଼ିକୁ ଆଉଟପୁଟ୍ କରିବ, ଏହି କ୍ଷେତ୍ରରେ "salesId-itemId-lineNum"। (ଲକ୍ଷ୍ୟ କରନ୍ତୁ ଯେ ମୁଁ ମାକ୍ରୋକୁ ପାରାମିଟରଗୁଡ଼ିକୁ ପାସ୍ କରିବା ସମୟରେ କମା ପରେ ସ୍ପେସ୍ ରଖିନଥିଲି, ଯେପରି ମୁଁ ସାଧାରଣତଃ ମେଥଡ୍ କଲ୍‌ରେ କରେ। କାରଣ ମାକ୍ରୋ ପ୍ରକୃତରେ ଏପରି ସ୍ପେସ୍ ବ୍ୟବହାର କରିବ, ତେଣୁ ଯଦି ମୁଁ କରେ ତେବେ ଆଉଟପୁଟ୍ "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 କର୍ପୋରେସନରେ ପୂର୍ଣ୍ଣକାଳୀନ ନିଯୁକ୍ତି ପାଇଛନ୍ତି। ବ୍ଲଗ୍ ନ ଲେଖିବା ସମୟରେ, ସେ ତାଙ୍କର ଖାଲି ସମୟ ବିଭିନ୍ନ ପ୍ରକାରର ଆଗ୍ରହ, ହବି ଏବଂ କାର୍ଯ୍ୟକଳାପରେ ବିତାଇଥାନ୍ତି, ଯାହା କିଛି ପରିମାଣରେ ଏହି ୱେବସାଇଟରେ ଆବୃତ ବିଭିନ୍ନ ବିଷୟଗୁଡ଼ିକରେ ପ୍ରତିଫଳିତ ହୋଇପାରେ।