ଡାଇନାମିକ୍ସ AX 2012 ରେ ମାକ୍ରୋ ଏବଂ strFmt ସହ ଷ୍ଟ୍ରିଙ୍ଗ ଫର୍ମାଟିଂ
ପ୍ରକାଶିତ: 12:51:53 AM UTC ଠାରେ ଫେବୃଆରୀ 16, 2025
ଏହି ପ୍ରବନ୍ଧରେ ଡାଇନାମିକ୍ସ AX 2012 ରେ କିଛି ଅଦ୍ଭୁତ ଆଚରଣ ବର୍ଣ୍ଣନା କରାଯାଇଛି ଯେତେବେଳେ ଏସଟିଆରଏଫଏମଟିରେ ଫର୍ମାଟ ଷ୍ଟ୍ରିଂ ଭାବରେ ଏକ ମାକ୍ରୋ ବ୍ୟବହାର କରିବା ସହିତ ଏହା ଉପରେ କିପରି କାର୍ଯ୍ୟ କରାଯିବ ସେ ବିଷୟରେ ଉଦାହରଣ।
String Formatting with Macro and strFmt in Dynamics AX 2012
ଏହି ପୋଷ୍ଟରେ ଥିବା ସୂଚନା ଡାଇନାମିକ୍ସ ଏଏକ୍ସ ୨୦୧୨ ଆର୩ ଉପରେ ଆଧାରିତ । ଏହା ଅନ୍ୟ ସଂସ୍କରଣ ପାଇଁ ବୈଧ ହୋଇପାରେ କିମ୍ବା ହୋଇନପାରେ।
ମୁଁ ନିକଟରେ ଏସଟିଆରଏଫଏମଟି ପ୍ରକାର୍ଯ୍ୟରେ ଏକ ସମସ୍ୟାର ସମ୍ମୁଖୀନ ହୋଇଥିଲି ଯାହା ମୋତେ କିଛି ସମୟ ପାଇଁ ଆଶ୍ଚର୍ଯ୍ୟ କରିଥିଲା | ସବୁଠାରୁ ଆଶ୍ଚର୍ଯ୍ୟଜନକ କଥା ହେଉଛି ମୁଁ ଏକ ଅଦ୍ଭୁତ ସୌଭାଗ୍ୟରେ ଏହା ପୂର୍ବରୁ ଆକ୍ସାପ୍ଟା / ଡାଇନାମିକ୍ସ ଏଏକ୍ସ ଡେଭଲପର ଭାବରେ ମୋର ଅନେକ ବର୍ଷ ମଧ୍ୟରେ ଏହାର ସମ୍ମୁଖୀନ ହୋଇନଥିଲି |
ସମସ୍ୟା ଟି ଥିଲା ଯେ ମୁଁ ଏସଟିଆରଏଫଏମଟି ପ୍ରକାର୍ଯ୍ୟ ପାଇଁ ଫର୍ମାଟ ଷ୍ଟ୍ରିଂ ଭାବରେ ଏକ ମାକ୍ରୋ ବ୍ୟବହାର କରିବାକୁ ଚେଷ୍ଟା କଲି ଏବଂ ଏହା କେବଳ କାମ କରିନଥିଲା । ଏହା % ପାରାମିଟରକୁ ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ଅଣଦେଖା କରିଥିଲା ଏବଂ କେବଳ ଅବଶିଷ୍ଟ ଷ୍ଟ୍ରିଙ୍ଗକୁ ଫେରାଇ ଦେଇଥିଲା।
ଏହାକୁ ଅନୁଧ୍ୟାନ କରିବା ପରେ, ମୁଁ ଆବିଷ୍କାର କଲି ଯେ ଷ୍ଟ୍ରିଙ୍ଗ୍ ଫର୍ମାଟ୍ କରିବା ପାଇଁ ମାକ୍ରୋସ୍ ନିଜେ ବ୍ୟବହାର କରାଯାଇପାରିବ, ଯାହା ମଧ୍ୟ ମୁଁ ଜାଣିନଥିଲି । ଓହ ହଁ, କିଛି ନୂଆ ଶିଖିବା ସବୁବେଳେ ଭଲ, କିନ୍ତୁ ମୁଁ ତଥାପି ବହୁତ ଆଶ୍ଚର୍ଯ୍ୟ ହୋଇଥିଲି ଯେ ମୁଁ ପୂର୍ବରୁ ଏହା ଦେଖିନଥିଲି |
ମୂଳତଃ, ଏପରି କିଛି
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
କାର୍ଯ୍ୟ କରିବ ନାହିଁ କାରଣ ମାକ୍ରୋରେ % ସଙ୍କେତଗୁଡିକ ପ୍ରକୃତରେ ମାକ୍ରୋର ନିଜସ୍ୱ ଷ୍ଟ୍ରିଙ୍ଗ ଫର୍ମାଟିଂ ବୈଶିଷ୍ଟ୍ୟ ଗୁଡିକ ପାଇଁ ବ୍ୟବହୃତ ହୁଏ। ଏହି କ୍ଷେତ୍ରରେ, ଏସଟିଆରଏଫଏମଟି ପ୍ରକାର୍ଯ୍ୟ ଫର୍ମାଟିଂ ଷ୍ଟ୍ରିଂକୁ "-- " ଭାବରେ ଦେଖିବ ଏବଂ ତେଣୁ କେବଳ ଏହାକୁ ଫେରାଇଦେବ।
ଏମିତି କିଛି:
info(#FormatMacro(salesId,itemId,lineNum));
କାମ କରିବ, କିନ୍ତୁ ବୋଧହୁଏ ଆପଣ ଚାହୁଁଥିବା ଭଳି ନୁହେଁ। ତିନୋଟି ଭରିଏବଲ୍ ର ମୂଲ୍ୟ ଉତ୍ପାଦନ କରିବା ପରିବର୍ତ୍ତେ, ଏହା ପରିବର୍ତ୍ତେ ଭେରିଏବଲ୍ ଗୁଡ଼ିକର ନାମ ଆଉଟପୁଟ୍ କରିବ, ଏହି କ୍ଷେତ୍ରରେ "ସେଲ୍ସଆଇଡି-ଆଇଟମ୍ ଆଇଡି-ଲାଇନ୍ନମ୍"। (ଧ୍ୟାନ ଦିଅନ୍ତୁ ଯେ ମୁଁ ସାଧାରଣତଃ ପଦ୍ଧତି କଲ୍ ରେ ପରି ମାକ୍ରୋକୁ ପାରାମିଟର ପାସ୍ କରିବା ସମୟରେ କୋମା ପରେ ସ୍ଥାନ ରଖିନଥିଲି। ଏହାର କାରଣ ହେଉଛି ମାକ୍ରୋ ପ୍ରକୃତରେ ଏପରି ସ୍ଥାନଗୁଡିକ ମଧ୍ୟ ବ୍ୟବହାର କରିବ, ତେଣୁ ଯଦି ମୁଁ ଏହା କରେ ତେବେ ଆଉଟପୁଟ୍ ହେବ "ସେଲ୍ସଆଇଡି- ଆଇଟମଆଇଡି- ଲାଇନନମ୍")।
ପ୍ରକୃତରେ strFMT ସହିତ ଫର୍ମାଟିଂ ଷ୍ଟ୍ରିଂ ଭାବରେ ଏକ ମାକ୍ରୋ ବ୍ୟବହାର କରିବାକୁ, ଆପଣଙ୍କୁ ଏହି ପରି ବ୍ୟାକ୍ ସ୍ଲାସ୍ ସହିତ ପ୍ରତିଶତ ସଙ୍କେତଗୁଡିକରୁ ବର୍ତ୍ତିବା ଆବଶ୍ୟକ:
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
ଏହା ପ୍ରକୃତରେ ଏପରି କାମ କରିବ ଯେପରି ଆପଣ ସିଧାସଳଖ ଫର୍ମାଟ ଷ୍ଟ୍ରିଙ୍ଗ ୍ ଯୋଗାଇ ଦେଇଛନ୍ତି।
ଏହି ଛୋଟ ଚାକିରି ଉଦାହରଣଗୁଡ଼ିକୁ ଦର୍ଶାଉଛି:
{
#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));
}