Miklix

డైనమిక్స్ AX 2012లో మాక్రో మరియు strFmtతో స్ట్రింగ్ ఫార్మాటింగ్

ప్రచురణ: 16 ఫిబ్రవరి, 2025 12:49:16 AM UTCకి

ఈ వ్యాసం డైనమిక్స్ AX 2012 లో strFmt లో మాక్రోను ఫార్మాట్ స్ట్రింగ్‌గా ఉపయోగిస్తున్నప్పుడు కొన్ని విచిత్రమైన ప్రవర్తనను వివరిస్తుంది, అలాగే దాని చుట్టూ ఎలా పని చేయాలో ఉదాహరణలను వివరిస్తుంది.


వీలైనంత ఎక్కువ మందికి అందుబాటులో ఉండేలా ఈ పేజీని ఇంగ్లీష్ నుండి యాంత్రికంగా అనువదించారు. దురదృష్టవశాత్తు, యాంత్రిక అనువాదం ఇంకా పరిపూర్ణమైన సాంకేతికత కాదు, కాబట్టి లోపాలు సంభవించవచ్చు. మీరు కోరుకుంటే, మీరు అసలు ఆంగ్ల సంస్కరణను ఇక్కడ చూడవచ్చు:

String Formatting with Macro and strFmt in Dynamics AX 2012

ఈ పోస్ట్‌లోని సమాచారం డైనమిక్స్ AX 2012 R3 ఆధారంగా రూపొందించబడింది. ఇది ఇతర వెర్షన్‌లకు చెల్లుబాటు కావచ్చు లేదా చెల్లకపోవచ్చు.

ఇటీవల నాకు strFmt ఫంక్షన్‌లో ఒక సమస్య ఎదురైంది, అది నన్ను కొంచెం కలవరపెట్టింది. అత్యంత ఆశ్చర్యకరమైన విషయం ఏమిటంటే, నేను ఆక్సాప్టా/డైనమిక్స్ 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));
}
బ్లూస్కీలో షేర్ చేయండిఫేస్‌బుక్‌లో షేర్ చేయండిలింక్డ్ఇన్‌లో షేర్ చేయండిTumblrలో షేర్ చేయండిX లో షేర్ చేయండిలింక్డ్ఇన్‌లో షేర్ చేయండిPinterestలో పిన్ చేయండి

మికెల్ బ్యాంగ్ క్రిస్టెన్సేన్

రచయిత గురుంచి

మికెల్ బ్యాంగ్ క్రిస్టెన్సేన్
మిక్కెల్ miklix.com సృష్టికర్త మరియు యజమాని. అతనికి ప్రొఫెషనల్ కంప్యూటర్ ప్రోగ్రామర్/సాఫ్ట్‌వేర్ డెవలపర్‌గా 20 సంవత్సరాలకు పైగా అనుభవం ఉంది మరియు ప్రస్తుతం ఒక పెద్ద యూరోపియన్ ఐటీ కార్పొరేషన్‌లో పూర్తి సమయం ఉద్యోగం చేస్తున్నాడు. బ్లాగింగ్ చేయనప్పుడు, అతను తన ఖాళీ సమయాన్ని విస్తృత శ్రేణి ఆసక్తులు, అభిరుచులు మరియు కార్యకలాపాలపై గడుపుతాడు, ఇవి కొంతవరకు ఈ వెబ్‌సైట్‌లో కవర్ చేయబడిన వివిధ అంశాలలో ప్రతిబింబిస్తాయి.