Miklix

Uumbizaji wa Kamba na Macro na strFmt katika Dynamics AX 2012

Iliyochapishwa: 16 Februari 2025, 00:49:11 UTC

Makala hii inaelezea tabia ya kipekee katika Dynamics AX 2012 wakati wa kutumia macro kama kamba ya muundo katika strFmt, pamoja na mifano juu ya jinsi ya kufanya kazi karibu nayo.


Ukurasa huu ulitafsiriwa kwa mashine kutoka kwa Kiingereza ili kuifanya iweze kupatikana kwa watu wengi iwezekanavyo. Kwa bahati mbaya, utafsiri wa mashine bado sio teknolojia iliyokamilishwa, kwa hivyo makosa yanaweza kutokea. Ukipenda, unaweza kutazama toleo asili la Kiingereza hapa:

String Formatting with Macro and strFmt in Dynamics AX 2012

Habari katika chapisho hili inategemea Dynamics AX 2012 R3. Inaweza au haiwezi kuwa halali kwa matoleo mengine.

Hivi karibuni nilikutana na suala na kazi ya strFmt ambayo ilinishangaza kidogo. Sehemu ya kushangaza zaidi ni kwamba mimi kwa bahati mbaya ya ajabu sijawahi kukutana nayo hapo awali katika miaka yangu mingi kama msanidi programu wa Aqapta / Dynamics AX.

Suala lilikuwa kwamba nilijaribu kutumia macro kama kamba ya umbizo kwa kazi ya strFmt na haikufanya kazi. Ilipuuza kabisa vigezo vya % na ilirudisha tu kamba iliyobaki.

Baada ya kuiangalia, niligundua kuwa macros wenyewe zinaweza kutumika kuunda kamba, ambayo pia ilikuwa kitu ambacho sikujua. Oh vizuri, daima ni vizuri kujifunza kitu kipya, lakini bado nilishangaa sana kwamba sikuwa nimekutana na hii hapo awali.

Kwa ujumla, kitu kama hiki

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

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

haitafanya kazi kwa sababu ishara za % katika makro hutumiwa kwa vipengele vya muundo wa kamba ya macro. Katika kesi hii, kazi ya strFmt itaona kamba ya uumbizaji kama "-" na kwa hivyo itarudi tu.

Kitu kama hiki:

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

Itafanya kazi, lakini labda sio jinsi unavyotaka. Badala ya kutoa maadili ya vigezo vitatu, itatoa majina ya vigezo badala yake, katika kesi hii "salesId-itemId-lineNum". (Tambua kwamba sikuweka nafasi baada ya koma wakati wa kupitisha vigezo kwa macro, kama kawaida mimi hufanya katika simu za njia. Hiyo ni kwa sababu macro itatumia nafasi kama hizo pia, kwa hivyo pato litakuwa "salesId- itemId- lineNum" ikiwa nilifanya).

Kwa kweli kutumia macro kama kamba ya muundo na strFmt, unahitaji kuepuka ishara za asilimia na backslashes, kama hii:

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

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

Hii itafanya kazi kama vile ulikuwa umetoa kamba ya umbizo moja kwa moja.

Kazi hii ndogo inaonyesha mifano:

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));
}
Shiriki kwenye BlueskyShiriki kwenye FacebookShiriki kwenye LinkedInShiriki kwenye TumblrShiriki kwenye XShiriki kwenye LinkedInBandika kwenye Pinterest

Mikkel Bang Christensen

Kuhusu Mwandishi

Mikkel Bang Christensen
Mikkel ndiye muundaji na mmiliki wa miklix.com. Ana uzoefu wa zaidi ya miaka 20 kama mtaalamu wa kupanga programu/programu za kompyuta na kwa sasa ameajiriwa muda wote kwa shirika kubwa la IT la Ulaya. Wakati si kublogi, yeye hutumia wakati wake wa ziada kwenye safu nyingi za mapendeleo, vitu vya kufurahisha, na shughuli, ambazo zinaweza kuonyeshwa kwa kadiri fulani katika mada anuwai zinazozungumziwa kwenye wavuti hii.