Miklix

ડાયનેમિક્સ AX 2012 માં મેક્રો અને strFmt સાથે શબ્દમાળા બંધારણ

પ્રકાશિત: 16 ફેબ્રુઆરી, 2025 એ 12:51:19 AM UTC વાગ્યે
છેલ્લે અપડેટ કરેલ: 12 જાન્યુઆરી, 2026 એ 08:44:45 AM UTC વાગ્યે

આ લેખ strFmt માં ફોર્મેટ સ્ટ્રિંગ તરીકે મેક્રોનો ઉપયોગ કરતી વખતે ડાયનેમિક્સ AX 2012 માં કેટલીક વિચિત્ર વર્તણૂકનું વર્ણન કરે છે, તેમજ તેની આસપાસ કેવી રીતે કાર્ય કરવું તેના ઉદાહરણો પણ આપે છે.


આ પૃષ્ઠ શક્ય તેટલા વધુ લોકો સુધી સુલભ બને તે માટે અંગ્રેજીમાંથી મશીન અનુવાદ કરવામાં આવ્યો હતો. કમનસીબે, મશીન અનુવાદ હજુ સુધી સંપૂર્ણ તકનીક નથી, તેથી ભૂલો થઈ શકે છે. જો તમે ઇચ્છો, તો તમે મૂળ અંગ્રેજી સંસ્કરણ અહીં જોઈ શકો છો:

String Formatting with Macro and strFmt in Dynamics AX 2012

આ પોસ્ટમાં આપેલી માહિતી ડાયનેમિક્સ 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 પર શેર કરોટમ્બલર પર શેર કરોX પર શેર કરોLinkedIn પર શેર કરોPinterest પર પિન કરો

મિકેલ ક્રિસ્ટેનસેન

લેખક વિશે

મિકેલ ક્રિસ્ટેનસેન
મિકેલ miklix.com ના સર્જક અને માલિક છે. તેમને એક વ્યાવસાયિક કમ્પ્યુટર પ્રોગ્રામર/સોફ્ટવેર ડેવલપર તરીકે 20 વર્ષથી વધુનો અનુભવ છે અને હાલમાં તેઓ એક મોટા યુરોપિયન IT કોર્પોરેશનમાં પૂર્ણ-સમય કાર્યરત છે. જ્યારે તેઓ બ્લોગિંગ કરતા નથી, ત્યારે તેઓ પોતાનો ફાજલ સમય વિવિધ રુચિઓ, શોખ અને પ્રવૃત્તિઓ પર વિતાવે છે, જે આ વેબસાઇટ પર આવરી લેવામાં આવેલા વિવિધ વિષયોમાં પ્રતિબિંબિત થઈ શકે છે.