ଡାଇନାମିକ୍ସ 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 ଫଙ୍କସନ୍ ପାଇଁ ଫର୍ମାଟ୍ ଷ୍ଟ୍ରିଙ୍ଗ ଭାବରେ ଏକ ମାକ୍ରୋ ବ୍ୟବହାର କରିବାକୁ ଚେଷ୍ଟା କରିଥିଲି ଏବଂ ଏହା କାମ କଲା ନାହିଁ। ଏହା % ପାରାମିଟରଗୁଡ଼ିକୁ ସମ୍ପୂର୍ଣ୍ଣ ଅଣଦେଖା କରିଥିଲା ଏବଂ କେବଳ ଷ୍ଟ୍ରିଙ୍ଗର ଅବଶିଷ୍ଟ ଅଂଶ ଫେରାଇଥିଲା।
ଏହାକୁ ଖୋଜିବା ପରେ, ମୁଁ ଜାଣିଲି ଯେ ମାକ୍ରୋଗୁଡ଼ିକୁ ଷ୍ଟ୍ରିଙ୍ଗ ଫର୍ମାଟ୍ କରିବା ପାଇଁ ବ୍ୟବହାର କରାଯାଇପାରିବ, ଯାହା ମୁଁ ଜାଣି ନଥିଲି। ହଁ, କିଛି ନୂଆ ଶିଖିବା ସର୍ବଦା ଭଲ, କିନ୍ତୁ ମୁଁ ଏପର୍ଯ୍ୟନ୍ତ ବହୁତ ଆଶ୍ଚର୍ଯ୍ୟ ହୋଇଥିଲି ଯେ ମୁଁ ଏହା ପୂର୍ବରୁ କେବେ ଦେଖି ନଥିଲି।
ମୂଳତଃ, ଏହିପରି କିଛି
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
କାମ କରିବ ନାହିଁ କାରଣ ମାକ୍ରୋରେ ଥିବା % ଚିହ୍ନଗୁଡ଼ିକ ପ୍ରକୃତରେ ମାକ୍ରୋର ନିଜସ୍ୱ ଷ୍ଟ୍ରିଙ୍ଗ ଫର୍ମାଟିଂ ବୈଶିଷ୍ଟ୍ୟଗୁଡ଼ିକ ପାଇଁ ବ୍ୟବହୃତ ହୁଏ। ଏହି କ୍ଷେତ୍ରରେ, strFmt ଫଙ୍କସନ୍ ଫର୍ମାଟିଂ ଷ୍ଟ୍ରିଙ୍ଗକୁ "--" ଭାବରେ ଦେଖିବ ଏବଂ ତେଣୁ କେବଳ ତାହା ଫେରାଇବ।
ଏହିପରି କିଛି:
info(#FormatMacro(salesId,itemId,lineNum));
ଏହା କାମ କରିବ, କିନ୍ତୁ ହୁଏତ ଆପଣ ଯେପରି ଚାହୁଁଛନ୍ତି ସେପରି ନୁହେଁ। ତିନୋଟି ଭେରିଏବଲ୍ର ମୂଲ୍ୟଗୁଡ଼ିକୁ ଆଉଟପୁଟ୍ କରିବା ପରିବର୍ତ୍ତେ, ଏହା ଭେରିଏବଲ୍ର ନାମଗୁଡ଼ିକୁ ଆଉଟପୁଟ୍ କରିବ, ଏହି କ୍ଷେତ୍ରରେ "salesId-itemId-lineNum"। (ଲକ୍ଷ୍ୟ କରନ୍ତୁ ଯେ ମୁଁ ମାକ୍ରୋକୁ ପାରାମିଟରଗୁଡ଼ିକୁ ପାସ୍ କରିବା ସମୟରେ କମା ପରେ ସ୍ପେସ୍ ରଖିନଥିଲି, ଯେପରି ମୁଁ ସାଧାରଣତଃ ମେଥଡ୍ କଲ୍ରେ କରେ। କାରଣ ମାକ୍ରୋ ପ୍ରକୃତରେ ଏପରି ସ୍ପେସ୍ ବ୍ୟବହାର କରିବ, ତେଣୁ ଯଦି ମୁଁ କରେ ତେବେ ଆଉଟପୁଟ୍ "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));
}
ଅଧିକ ପଠନ
ଯଦି ଆପଣ ଏହି ପୋଷ୍ଟକୁ ଉପଭୋଗ କରିଛନ୍ତି, ତେବେ ଆପଣଙ୍କୁ ଏହି ପରାମର୍ଶଗୁଡ଼ିକ ମଧ୍ୟ ପସନ୍ଦ ଆସିପାରେ:
- ଡାଇନାମିକ୍ସ AX 2012 ରେ ଡାଟା () ଏବଂ buf2Buf() ମଧ୍ୟରେ ପାର୍ଥକ୍ୟ
- ଡାଇନାମିକ୍ସ AX 2012 ରେ ଏକ SysOpation ଡାଟା ଚୁକ୍ତି ଶ୍ରେଣୀରେ ଏକ କ୍ୱେରୀ ବ୍ୟବହାର କରିବା
- ଡାଇନାମିକ୍ସ AX 2012 ରେ AIF ସେବା ପାଇଁ ଡକ୍ୟୁମେଣ୍ଟ ଶ୍ରେଣୀ ଏବଂ ପ୍ରଶ୍ନ ଚିହ୍ନଟ କରିବା
