Miklix

Uumbizaji wa Kamba na Macro na strFmt katika Dynamics AX 2012

Iliyochapishwa: 16 Februari 2025, 00:49:11 UTC
Mara ya mwisho kusasishwa: 12 Januari 2026, 08:44:38 UTC

Makala haya yanaelezea baadhi ya tabia za kipekee katika Dynamics AX 2012 wakati wa kutumia makro kama mfuatano wa umbizo katika strFmt, pamoja na mifano ya jinsi ya kuishughulikia.


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

Taarifa katika chapisho hili inategemea Dynamics AX 2012 R3. Huenda ikawa halali au isiwe halali kwa matoleo mengine.

Hivi majuzi nilikutana na tatizo na kitendakazi cha strFmt ambacho kilinishangaza kidogo. Sehemu ya kushangaza zaidi ilikuwa kwamba kwa bahati mbaya sijawahi kukutana nalo hapo awali katika miaka yangu mingi kama msanidi programu wa Axapta/Dynamics AX.

Tatizo lilikuwa kwamba nilijaribu kutumia makro kama mfuatano wa umbizo kwa ajili ya kitendakazi cha strFmt na haikufanya kazi. Ilipuuza kabisa vigezo vya % na ikarudisha tu sehemu iliyobaki ya mfuatano.

Baada ya kuichunguza, niligundua kwamba makro zenyewe zinaweza kutumika kupangilia mifuatano, jambo ambalo pia sikulijua. Naam, ni vizuri kujifunza kitu kipya kila wakati, lakini bado nilishangaa sana kwamba sikuwa nimekutana na hili hapo awali.

Kimsingi, kitu kama hiki

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

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

Haitafanya kazi kwa sababu ishara za % katika makro zinatumika kwa vipengele vya umbizo la mfuatano wa makro. Katika hali hii, kitendakazi cha strFmt kitaona mfuatano wa umbizo kama "--" na kwa hivyo kitarudisha hilo tu.

Kitu kama hiki:

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

Itafanya kazi, lakini labda si jinsi unavyotaka iwe. Badala ya kutoa thamani za vigezo vitatu, itatoa majina ya vigezo badala yake, katika hali hii "salesId-itemId-lineNum". (Tambua kwamba sikuweka nafasi baada ya koma wakati wa kupitisha vigezo kwenye makro, kama kawaida ninavyofanya katika simu za mbinu. Hiyo ni kwa sababu makro itatumia nafasi kama hizo pia, kwa hivyo matokeo yatakuwa "salesId-itemId-lineNum" ikiwa ningefanya).

Ili kutumia makro kama kamba ya umbizo na strFmt, unahitaji kuepuka ishara za asilimia zenye mipigo ya nyuma, kama hii:

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

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

Hii itafanya kazi kana kwamba umewasilisha mfuatano wa 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));
}

Kusoma Zaidi

Ikiwa ulifurahia chapisho hili, unaweza pia kupenda mapendekezo haya:


Shiriki kwenye BlueskyShiriki kwenye FacebookShiriki kwenye LinkedInShiriki kwenye TumblrShiriki kwenye XShiriki kwenye LinkedInBandika kwenye Pinterest

Mikkel Christensen

Kuhusu Mwandishi

Mikkel 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.