Miklix

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.


Ang pahinang ito ay isinalin sa makina mula sa Ingles upang gawin itong naa-access sa pinakamaraming tao hangga't maaari. Sa kasamaang palad, ang pagsasalin ng makina ay hindi pa isang perpektong teknolohiya, kaya maaaring mangyari ang mga error. Kung gusto mo, maaari mong tingnan ang orihinal na bersyong Ingles dito:

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

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

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:

#define.FormatMacro('%1-%2-%3');
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:

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

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:

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));
}
Ibahagi sa BlueskyIbahagi sa FacebookIbahagi sa LinkedInIbahagi sa TumblrIbahagi sa XIbahagi sa LinkedInI-pin sa Pinterest

Mikkel Christensen

Tungkol sa May-akda

Mikkel Christensen
Si Mikkel ang lumikha at may-ari ng miklix.com. Siya ay may higit sa 20 taong karanasan bilang isang propesyonal na computer programmer/software developer at kasalukuyang nagtatrabaho ng full-time para sa isang malaking European IT corporation. Kapag hindi nagba-blog, ginugugol niya ang kanyang bakanteng oras sa isang malawak na hanay ng mga interes, libangan, at aktibidad, na maaaring sa ilang lawak ay makikita sa iba't ibang mga paksang sakop sa website na ito.