ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ ಮ್ಯಾಕ್ರೊ ಮತ್ತು strFmt ನೊಂದಿಗೆ ಸ್ಟ್ರಿಂಗ್ ಫಾರ್ಮ್ಯಾಟಿಂಗ್
ಪ್ರಕಟಣೆ: ಫೆಬ್ರವರಿ 16, 2025 ರಂದು 12:49:43 ಪೂರ್ವಾಹ್ನ UTC ಸಮಯಕ್ಕೆ
ಕೊನೆಯದಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ: ಜನವರಿ 12, 2026 ರಂದು 08:44:42 ಪೂರ್ವಾಹ್ನ UTC ಸಮಯಕ್ಕೆ
ಈ ಲೇಖನವು ಡೈನಾಮಿಕ್ಸ್ AX 2012 ರಲ್ಲಿ strFmt ನಲ್ಲಿ ಮ್ಯಾಕ್ರೋವನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ಬಳಸುವಾಗ ಕೆಲವು ವಿಶಿಷ್ಟ ನಡವಳಿಕೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ, ಜೊತೆಗೆ ಅದರ ಸುತ್ತ ಹೇಗೆ ಕೆಲಸ ಮಾಡುವುದು ಎಂಬುದರ ಉದಾಹರಣೆಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ.
String Formatting with Macro and strFmt in Dynamics AX 2012
ಈ ಪೋಸ್ಟ್ನಲ್ಲಿರುವ ಮಾಹಿತಿಯು ಡೈನಾಮಿಕ್ಸ್ AX 2012 R3 ಅನ್ನು ಆಧರಿಸಿದೆ. ಇದು ಇತರ ಆವೃತ್ತಿಗಳಿಗೆ ಮಾನ್ಯವಾಗಿರಬಹುದು ಅಥವಾ ಇಲ್ಲದಿರಬಹುದು.
ಇತ್ತೀಚೆಗೆ ನಾನು strFmt ಕಾರ್ಯದಲ್ಲಿ ಒಂದು ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸಿದೆ, ಅದು ನನ್ನನ್ನು ಸ್ವಲ್ಪ ಗೊಂದಲಕ್ಕೀಡು ಮಾಡಿತು. ಅತ್ಯಂತ ಗೊಂದಲಮಯವಾದ ಭಾಗವೆಂದರೆ, ಕೆಲವು ವಿಚಿತ್ರ ಕಾಕತಾಳೀಯತೆಯಿಂದ, ನಾನು ಆಕ್ಸಾಪ್ಟಾ/ಡೈನಾಮಿಕ್ಸ್ 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));
}
ಹೆಚ್ಚಿನ ಓದಿಗೆ
ನೀವು ಈ ಪೋಸ್ಟ್ ಅನ್ನು ಆನಂದಿಸಿದ್ದರೆ, ನೀವು ಈ ಸಲಹೆಗಳನ್ನು ಸಹ ಇಷ್ಟಪಡಬಹುದು:
- ಡೈನಾಮಿಕ್ಸ್ AX 2012 ರಲ್ಲಿ ಎಲ್ಲಾ ದಶಮಾಂಶಗಳೊಂದಿಗೆ ರಿಯಲ್ ಅನ್ನು ಸ್ಟ್ರಿಂಗ್ಗೆ ಪರಿವರ್ತಿಸಿ
- ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ ದೋಷ "ಡೇಟಾ ಕಾಂಟ್ರಾಕ್ಟ್ ಆಬ್ಜೆಕ್ಟ್ ಗಾಗಿ ಯಾವುದೇ ಮೆಟಾಡೇಟಾ ವರ್ಗವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿಲ್ಲ"
- ಡೈನಾಮಿಕ್ಸ್ AX 2012 ರಲ್ಲಿ SysOperation ಡೇಟಾ ಕಾಂಟ್ರಾಕ್ಟ್ ಕ್ಲಾಸ್ನಲ್ಲಿ ಪ್ರಶ್ನೆಯನ್ನು ಬಳಸುವುದು
