Miklix

டைனமிக்ஸ் AX 2012 இல் மேக்ரோ மற்றும் strFmt உடன் சரம் வடிவமைப்பு

வெளியிடப்பட்டது: 16 பிப்ரவரி, 2025 அன்று AM 12:49:41 UTC
கடைசியாகப் புதுப்பிக்கப்பட்டது: 12 ஜனவரி, 2026 அன்று AM 8:44:41 UTC

இந்தக் கட்டுரை, strFmt-இல் மேக்ரோவை வடிவமைப்பு சரமாகப் பயன்படுத்தும் போது, டைனமிக்ஸ் AX 2012-இல் உள்ள சில விசித்திரமான நடத்தைகளையும், அதைச் சுற்றி எவ்வாறு செயல்படுவது என்பதற்கான எடுத்துக்காட்டுகளையும் விவரிக்கிறது.


இந்தப் பக்கம் முடிந்தவரை பலருக்கு அணுகக்கூடியதாக இருக்க வேண்டும் என்பதற்காக ஆங்கிலத்திலிருந்து இயந்திர மொழிபெயர்ப்பு செய்யப்பட்டது. துரதிர்ஷ்டவசமாக, இயந்திர மொழிபெயர்ப்பு இன்னும் முழுமையான தொழில்நுட்பமாக இல்லை, எனவே பிழைகள் ஏற்படலாம். நீங்கள் விரும்பினால், அசல் ஆங்கிலப் பதிப்பை இங்கே காணலாம்:

String Formatting with Macro and strFmt in Dynamics AX 2012

இந்தப் பதிவில் உள்ள தகவல்கள் Dynamics AX 2012 R3 ஐ அடிப்படையாகக் கொண்டவை. இது மற்ற பதிப்புகளுக்கு செல்லுபடியாகலாம் அல்லது செல்லுபடியாகாமல் இருக்கலாம்.

சமீபத்தில் strFmt செயல்பாட்டில் ஒரு சிக்கலை சந்தித்தேன், அது என்னை கொஞ்சம் குழப்பத்தில் ஆழ்த்தியது. மிகவும் குழப்பமான விஷயம் என்னவென்றால், நான் ஒரு Axapta/Dynamics AX டெவலப்பராக பல வருடங்களாக இருந்ததில், இதற்கு முன்பு இதுபோன்ற ஒரு சிக்கலை சந்தித்ததில்லை.

பிரச்சனை என்னவென்றால், நான் strFmt செயல்பாட்டிற்கு ஒரு மேக்ரோவை வடிவமைப்பு சரமாகப் பயன்படுத்த முயற்சித்தேன், அது வேலை செய்யவில்லை. அது % அளவுருக்களை முற்றிலுமாகப் புறக்கணித்து, மீதமுள்ள சரத்தை மட்டுமே திருப்பி அனுப்பியது.

அதைப் பற்றி ஆராய்ந்த பிறகு, மேக்ரோக்கள் சரங்களை வடிவமைக்கப் பயன்படும் என்பதைக் கண்டுபிடித்தேன், அதுவும் எனக்குத் தெரியாது. ஓ, புதிதாக ஏதாவது கற்றுக்கொள்வது எப்போதும் நல்லது, ஆனால் இதற்கு முன்பு நான் இதை எதிர்கொள்ளாதது எனக்கு மிகவும் ஆச்சரியமாக இருந்தது.

அடிப்படையில், இது போன்ற ஒன்று

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

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

மேக்ரோவில் உள்ள % குறிகள் உண்மையில் மேக்ரோவின் சொந்த சர வடிவமைப்பு அம்சங்களுக்குப் பயன்படுத்தப்படுவதால் இது வேலை செய்யாது. இந்த விஷயத்தில், strFmt செயல்பாடு வடிவமைப்பு சரத்தை "--" ஆகக் காணும், எனவே அதை மட்டுமே வழங்கும்.

இது போன்ற ஒன்று:

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

வேலை செய்யும், ஆனால் நீங்கள் விரும்பும் வழியில் வேலை செய்யாது. மூன்று மாறிகளின் மதிப்புகளை வெளியிடுவதற்கு பதிலாக, அது மாறிகளின் பெயர்களை வெளியிடும், இந்த விஷயத்தில் "salesId-itemId-lineNum". (நான் வழக்கமாக முறை அழைப்புகளில் செய்வது போல, மேக்ரோவிற்கு அளவுருக்களை அனுப்பும்போது காற்புள்ளிகளுக்குப் பிறகு இடைவெளிகளை வைக்கவில்லை என்பதைக் கவனியுங்கள். ஏனென்றால் மேக்ரோ உண்மையில் அத்தகைய இடைவெளிகளையும் பயன்படுத்தும், எனவே நான் செய்தால் வெளியீடு "salesId- itemId- lineNum" ஆக இருக்கும்).

strFmt உடன் ஒரு மேக்ரோவை வடிவமைப்பு சரமாகப் பயன்படுத்த, பின்சாய்வுக்கோடுகள் மூலம் சதவீத அடையாளங்களைத் தவிர்க்க வேண்டும், எடுத்துக்காட்டாக:

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

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

நீங்கள் நேரடியாக வடிவமைப்பு சரத்தை வழங்கியது போல் இது உண்மையில் செயல்படும்.

இந்த சிறிய வேலை உதாரணங்களை விளக்குகிறது:

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));
}

மேலும் படிக்க

இந்த இடுகை உங்களுக்குப் பிடித்திருந்தால், இந்த பரிந்துரைகளையும் நீங்கள் விரும்பலாம்:


ப்ளூஸ்கையில் பகிரவும்பேஸ்புக்கில் பகிரவும்LinkedIn இல் பகிரவும்Tumblr இல் பகிரவும்X இல் பகிரவும்LinkedIn இல் பகிரவும்பின்டரஸ்டில் பின் செய்யவும்

மிக்கேல் கிறிஸ்டென்சன்

எழுத்தாளர் பற்றி

மிக்கேல் கிறிஸ்டென்சன்
மிக்கல் என்பவர் miklix.com இன் படைப்பாளர் மற்றும் உரிமையாளர் ஆவார். அவருக்கு 20 ஆண்டுகளுக்கும் மேலான தொழில்முறை கணினி நிரலாளர்/மென்பொருள் உருவாக்குநராக அனுபவம் உள்ளது, மேலும் தற்போது ஒரு பெரிய ஐரோப்பிய ஐடி நிறுவனத்தில் முழுநேரப் பணியாளராக உள்ளார். வலைப்பதிவு செய்யாதபோது, ​​அவர் தனது ஓய்வு நேரத்தை பரந்த அளவிலான ஆர்வங்கள், பொழுதுபோக்குகள் மற்றும் செயல்பாடுகளில் செலவிடுகிறார், இது இந்த வலைத்தளத்தில் உள்ளடக்கப்பட்ட பல்வேறு தலைப்புகளில் ஓரளவுக்கு பிரதிபலிக்கக்கூடும்.