Miklix

ਡਾਇਨਾਮਿਕਸ AX 2012 ਵਿੱਚ ਮੈਕਰੋ ਅਤੇ strFmt ਨਾਲ ਸਟ੍ਰਿੰਗ ਫਾਰਮੈਟਿੰਗ

ਪ੍ਰਕਾਸ਼ਿਤ: 19 ਮਾਰਚ 2025 9:33:10 ਬਾ.ਦੁ. UTC

ਇਹ ਲੇਖ ਡਾਇਨਾਮਿਕਸ AX 2012 ਵਿੱਚ ਕੁਝ ਅਜੀਬ ਵਿਵਹਾਰ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ ਜਦੋਂ strFmt ਵਿੱਚ ਇੱਕ ਮੈਕਰੋ ਨੂੰ ਫਾਰਮੈਟ ਸਟ੍ਰਿੰਗ ਵਜੋਂ ਵਰਤਦੇ ਹੋ, ਅਤੇ ਨਾਲ ਹੀ ਇਸਦੇ ਆਲੇ-ਦੁਆਲੇ ਕਿਵੇਂ ਕੰਮ ਕਰਨਾ ਹੈ ਇਸ ਬਾਰੇ ਉਦਾਹਰਣਾਂ ਵੀ ਦਿੰਦਾ ਹੈ।


ਇਸ ਪੰਨੇ ਨੂੰ ਵੱਧ ਤੋਂ ਵੱਧ ਲੋਕਾਂ ਤੱਕ ਪਹੁੰਚਯੋਗ ਬਣਾਉਣ ਲਈ ਅੰਗਰੇਜ਼ੀ ਤੋਂ ਮਸ਼ੀਨ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਸੀ। ਬਦਕਿਸਮਤੀ ਨਾਲ, ਮਸ਼ੀਨ ਅਨੁਵਾਦ ਅਜੇ ਇੱਕ ਸੰਪੂਰਨ ਤਕਨਾਲੋਜੀ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਗਲਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਜੇ ਤੁਸੀਂ ਚਾਹੋ, ਤਾਂ ਤੁਸੀਂ ਮੂਲ ਅੰਗਰੇਜ਼ੀ ਸੰਸਕਰਣ ਇੱਥੇ ਦੇਖ ਸਕਦੇ ਹੋ:

String Formatting with Macro and strFmt in Dynamics AX 2012

ਇਸ ਪੋਸਟ ਵਿਚ ਦਿੱਤੀ ਜਾਣਕਾਰੀ Dynamics AX 2012 R3 'ਤੇ ਆਧਾਰਿਤ ਹੈ। ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਦੂਜੇ ਵਰਜਨਾਂ ਲਈ ਇਹ ਮਾਨਯਾ ਨਾ ਹੋਵੇ।

ਹਾਲ ਹੀ ਵਿੱਚ ਮੈਂ strFmt ਫੰਕਸ਼ਨ ਨਾਲ ਇੱਕ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕੀਤਾ ਜਿਸਨੇ ਮੈਨੂੰ ਕੁਝ ਸਮੇਂ ਲਈ ਹੈਰਾਨ ਕਰ ਦਿੱਤਾ। ਸਭ ਤੋਂ ਹੈਰਾਨੀਜਨਕ ਗੱਲ ਇਹ ਸੀ ਕਿ ਮੈਂ ਇੱਕ ਅਜੀਬ ਹਾਦਸੇ ਕਾਰਨ ਆਪਣੇ ਕਈ ਸਾਲਾਂ ਦੇ Axapta/Dynamics AX ਡਿਵੈਲਪਰ ਦੇ ਤਜਰਬੇ ਵਿੱਚ ਕਦੇ ਵੀ ਇਸ ਨਾਲ ਸਾਮਣਾ ਨਹੀਂ ਕੀਤਾ ਸੀ।

ਸਮੱਸਿਆ ਇਹ ਸੀ ਕਿ ਮੈਂ strFmt ਫੰਕਸ਼ਨ ਲਈ ਫਾਰਮੈਟ ਸਟ੍ਰਿੰਗ ਵਜੋਂ ਇੱਕ ਮੈਕਰੋ ਨੂੰ ਵਰਤਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਅਤੇ ਇਹ ਕੰਮ ਨਹੀਂ ਕੀਤਾ। ਇਸਨੇ % ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਦਿੱਤਾ ਅਤੇ ਸਿਰਫ ਸਟ੍ਰਿੰਗ ਦੇ ਬਾਕੀ ਹਿਸੇ ਨੂੰ ਵਾਪਸ ਕੀਤਾ।

ਇਸਦੀ ਜਾਂਚ ਕਰਨ ਦੇ ਬਾਅਦ, ਮੈਨੂੰ ਪਤਾ ਲੱਗਿਆ ਕਿ ਮੈਕਰੋਆਂ ਨੂੰ ਸਟ੍ਰਿੰਗਜ਼ ਫਾਰਮੈਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਇਹ ਵੀ ਇੱਕ ਗੱਲ ਸੀ ਜਿਸਦਾ ਮੈਨੂੰ ਪਤਾ ਨਹੀਂ ਸੀ। ਓਹ well, ਨਵੀਂ ਗੱਲ ਸਿੱਖਣਾ ਹਮੇਸ਼ਾ ਚੰਗਾ ਹੁੰਦਾ ਹੈ, ਪਰ ਮੈਂ ਫਿਰ ਵੀ ਹੈਰਾਨ ਸੀ ਕਿ ਮੈਂ ਇਹ ਪਹਿਲਾਂ ਕਦੇ ਨਹੀਂ ਆਖਿਆ।

ਬੁਨਿਆਦੀ ਤੌਰ 'ਤੇ, ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ

#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));
}
ਬਲੂਸਕੀ 'ਤੇ ਸਾਂਝਾ ਕਰੋਫੇਸਬੁੱਕ 'ਤੇ ਸਾਂਝਾ ਕਰੋਲਿੰਕਡਇਨ 'ਤੇ ਸਾਂਝਾ ਕਰੋਟਮਬਲਰ 'ਤੇ ਸਾਂਝਾ ਕਰੋX 'ਤੇ ਸਾਂਝਾ ਕਰੋਲਿੰਕਡਇਨ 'ਤੇ ਸਾਂਝਾ ਕਰੋPinterest 'ਤੇ ਪਿੰਨ ਕਰੋ

ਮਿੱਕੇਲ ਕ੍ਰਿਸਟਨਸਨ

ਲੇਖਕ ਬਾਰੇ

ਮਿੱਕੇਲ ਕ੍ਰਿਸਟਨਸਨ
ਮਿਕੇਲ miklix.com ਦਾ ਸਿਰਜਣਹਾਰ ਅਤੇ ਮਾਲਕ ਹੈ। ਉਸਨੂੰ ਇੱਕ ਪੇਸ਼ੇਵਰ ਕੰਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮਰ/ਸਾਫਟਵੇਅਰ ਡਿਵੈਲਪਰ ਵਜੋਂ 20 ਸਾਲਾਂ ਤੋਂ ਵੱਧ ਦਾ ਤਜਰਬਾ ਹੈ ਅਤੇ ਉਹ ਵਰਤਮਾਨ ਵਿੱਚ ਇੱਕ ਵੱਡੇ ਯੂਰਪੀਅਨ ਆਈਟੀ ਕਾਰਪੋਰੇਸ਼ਨ ਲਈ ਪੂਰਾ ਸਮਾਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਉਹ ਬਲੌਗ ਨਹੀਂ ਲਿਖਦਾ, ਤਾਂ ਉਹ ਆਪਣਾ ਖਾਲੀ ਸਮਾਂ ਬਹੁਤ ਸਾਰੀਆਂ ਰੁਚੀਆਂ, ਸ਼ੌਕ ਅਤੇ ਗਤੀਵਿਧੀਆਂ 'ਤੇ ਬਿਤਾਉਂਦਾ ਹੈ, ਜੋ ਕਿ ਕੁਝ ਹੱਦ ਤੱਕ ਇਸ ਵੈੱਬਸਾਈਟ 'ਤੇ ਕਵਰ ਕੀਤੇ ਗਏ ਵਿਸ਼ਿਆਂ ਦੀ ਵਿਭਿੰਨਤਾ ਵਿੱਚ ਪ੍ਰਤੀਬਿੰਬਤ ਹੋ ਸਕਦਾ ਹੈ।