டைனமிக்ஸ் AX 2012 இல் மேக்ரோ மற்றும் strFmt உடன் சரம் வடிவமைப்பு
வெளியிடப்பட்டது: 16 பிப்ரவரி, 2025 அன்று AM 12:49:41 UTC
இந்த கட்டுரை டைனமிக்ஸ் AX 2012 இல் ஒரு மேக்ரோவை strFMT இல் வடிவமைப்பு சரமாகப் பயன்படுத்தும் போது சில விசித்திரமான நடத்தைகளையும், அதைச் சுற்றி எவ்வாறு வேலை செய்வது என்பதற்கான எடுத்துக்காட்டுகளையும் விவரிக்கிறது.
String Formatting with Macro and strFmt in Dynamics AX 2012
இந்த இடுகையில் உள்ள தகவல்கள் Dynamics AX 2012 R3 ஐ அடிப்படையாகக் கொண்டவை. இது மற்ற பதிப்புகளுக்கு செல்லுபடியாகலாம் அல்லது செல்லுபடியாகாமல் இருக்கலாம்.
நான் சமீபத்தில் strFmt செயல்பாட்டில் ஒரு சிக்கலை எதிர்கொண்டேன், அது என்னை சிறிது குழப்பியது. மிகவும் குழப்பமான பகுதி என்னவென்றால், சில வித்தியாசமான தற்செயல் நிகழ்வுகளால் நான் ஒரு Axapta / Dynamics AX டெவலப்பராக எனது பல ஆண்டுகளில் இதை இதற்கு முன்பு சந்தித்ததில்லை.
சிக்கல் என்னவென்றால், strFmt செயல்பாட்டிற்கான வடிவமைப்பு சரமாக மேக்ரோவைப் பயன்படுத்த முயற்சித்தேன், அது வேலை செய்யவில்லை. இது % அளவுருக்களை முற்றிலும் புறக்கணித்து, மீதமுள்ள சரத்தை மட்டுமே திருப்பித் தந்தது.
அதைப் பார்த்த பிறகு, சரங்களை வடிவமைக்க மேக்ரோக்களைப் பயன்படுத்தலாம் என்பதைக் கண்டுபிடித்தேன், இதுவும் எனக்குத் தெரியாத ஒன்று. ஓ நல்லது, புதிதாக ஒன்றைக் கற்றுக்கொள்வது எப்போதும் நல்லது, ஆனால் நான் இதற்கு முன்பு இதைக் கடந்து வரவில்லை என்பது எனக்கு மிகவும் ஆச்சரியமாக இருந்தது.
அடிப்படையில், இது போன்ற ஒன்று
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
மேக்ரோவில் உள்ள % குறிகள் உண்மையில் மேக்ரோவின் சொந்த சரம் வடிவமைப்பு அம்சங்களுக்கு பயன்படுத்தப்படுவதால் வேலை செய்யாது. இந்த வழக்கில், strFmt செயல்பாடு வடிவமைப்பு சரத்தை "--" ஆகக் காணும், எனவே அதை மட்டுமே திருப்பித் தரும்.
இது போன்ற ஏதாவது:
info(#FormatMacro(salesId,itemId,lineNum));
வேலை செய்யும், ஆனால் நீங்கள் விரும்பும் வழியில் அல்ல. மூன்று மாறிகளின் மதிப்புகளை வெளியிடுவதற்குப் பதிலாக, அதற்கு பதிலாக மாறிகளின் பெயர்களை வெளியிடும், இந்த விஷயத்தில் "salesId-itemId-lineNum". (நான் வழக்கமாக முறை அழைப்புகளில் செய்வது போல, மேக்ரோவுக்கு அளவுருக்களை அனுப்பும்போது காற்புள்ளிகளுக்குப் பிறகு இடைவெளிகளை வைக்கவில்லை என்பதைக் கவனியுங்கள். ஏனென்றால், மேக்ரோ உண்மையில் அத்தகைய இடைவெளிகளையும் பயன்படுத்தும், எனவே நான் செய்தால் வெளியீடு "salesId- itemId- lineNum" ஆக இருக்கும்).
strFmt உடன் வடிவமைப்பு சரமாக ஒரு மேக்ரோவைப் பயன்படுத்த, இது போன்ற பின்சாய்வுகளுடன் சதவீத அறிகுறிகளிலிருந்து நீங்கள் தப்பிக்க வேண்டும்:
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
நீங்கள் வடிவமைப்பு சரத்தை நேரடியாக வழங்கியதைப் போல இது உண்மையில் செயல்படும்.
இந்த சிறிய வேலை எடுத்துக்காட்டுகளை விளக்குகிறது:
{
#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));
}