Pag-format ng String gamit ang Macro at strFmt sa Dynamics AX 2012
Nai-publish: Marso 19, 2025 nang 9:33:12 PM UTC
Inilalarawan ng artikulong ito ang ilang kakaibang gawi sa Dynamics AX 2012 kapag gumagamit ng macro bilang format na string sa strFmt, pati na rin ang mga halimbawa kung paano ito gagawin.
String Formatting with Macro and strFmt in Dynamics AX 2012
Ang impormasyon sa post na ito ay batay sa Dynamics AX 2012 R3. Maaaring hindi ito naaangkop sa iba pang mga bersyon.
Kamakailan lang ay nakatagpo ako ng isang isyu sa strFmt function na medyo nakakalito sa akin. Ang pinaka-nakakalitong bahagi ay na sa isang kakaibang pagkakataon, hindi ko pa ito nararanasan sa mga taon ko bilang isang Axapta/Dynamics AX developer.
Ang isyu ay na sinubukan kong gamitin ang isang macro bilang format string para sa strFmt function at hindi ito gumana. Ganap na binalewala nito ang mga % parameters at nagbalik lang ng natirang bahagi ng string.
Pagkatapos ng masusing pagsusuri, natuklasan ko na ang mga macro mismo ay maaaring gamitin upang i-format ang mga string, isang bagay na hindi ko rin alam. Ayos lang, maganda parin na matututo ng bago, ngunit talagang nagulat pa rin ako na hindi ko pa ito nararanasan noon.
Sa madaling salita, isang bagay tulad nito
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
ay hindi gagana dahil ang mga % sign sa macro ay aktwal na ginagamit para sa mga tampok ng sariling string formatting ng macro. Sa kasong ito, makikita ng strFmt function ang formatting string bilang "--" at ibabalik lamang iyon.
Isang bagay tulad nito:
info(#FormatMacro(salesId,itemId,lineNum));
ay gagana, ngunit marahil hindi sa paraang nais mo. Sa halip na i-output ang mga halaga ng tatlong variable, i-output nito ang mga pangalan ng mga variable, sa kasong ito "salesId-itemId-lineNum". (Pansin na hindi ako naglagay ng mga espasyo pagkatapos ng mga kuwit kapag ipinapasa ang mga parameter sa macro, tulad ng karaniwan kong ginagawa sa mga tawag ng metodo. Ito ay dahil ang macro ay aktwal na gagamit din ng mga espasyong iyon, kaya ang output ay magiging "salesId- itemId- lineNum" kung ginawa ko ito.)
Upang talagang magamit ang isang macro bilang formatting string sa strFmt, kailangan mong i-escape ang mga percentage sign gamit ang backslashes, tulad nito:
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Gagana ito nang tulad ng kung ipinasa mo ang format string nang direkta.
Itong maliit na trabaho ay nagpapakita ng mga halimbawa:
{
#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));
}