Miklix

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

પ્રકાશિત: 16 ફેબ્રુઆરી, 2025 એ 12:51:19 AM UTC વાગ્યે

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


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

String Formatting with Macro and strFmt in Dynamics AX 2012

આ પોસ્ટમાંની માહિતી ડાયનેમિક્સ એએક્સ ૨૦૧૨ આર ૩ પર આધારિત છે. તે અન્ય સંસ્કરણો માટે માન્ય હોઈ શકે છે અથવા ન પણ હોઈ શકે.

મને તાજેતરમાં જ એસ.ટી.આર.એફ.એમ.ટી. ફંક્શન સાથે એક સમસ્યાનો સામનો કરવો પડ્યો જેણે મને થોડા સમય માટે મૂંઝવણમાં મૂક્યો. સૌથી વધુ આશ્ચર્યજનક વાત એ હતી કે કેટલાક વિચિત્ર સંયોગો દ્વારા મને એક્સાપ્ટા / ડાયનેમિક્સ એએક્સ ડેવલપર તરીકેના મારા ઘણા વર્ષોમાં આ પહેલાં ક્યારેય તેનો સામનો કરવો પડ્યો નથી.

મુદ્દો એ હતો કે મેં એસ.ટી.આર.એફ.એમ.ટી. ફંક્શન માટે ફોર્મેટ સ્ટ્રિંગ તરીકે મેક્રોનો ઉપયોગ કરવાનો પ્રયાસ કર્યો અને તે કામ કરતું નથી. તેણે % માપદંડોને સંપૂર્ણપણે અવગણ્યા હતા અને માત્ર શબ્દમાળાના બાકીના ભાગને જ પરત કર્યા હતા.

તેની તપાસ કર્યા પછી, મેં શોધી કાઢ્યું કે મેક્રોઝનો ઉપયોગ તારને ફોર્મેટ કરવા માટે થઈ શકે છે, જે પણ કંઈક એવું હતું જે હું જાણતો ન હતો. ઓહ વેલ, કશુંક નવું શીખવું એ હંમેશાં સારું હોય છે, પરંતુ મને હજી પણ ખૂબ આશ્ચર્ય થયું હતું કે આ પહેલાં મને આ વાતની જાણ થઈ ન હતી.

મૂળભૂત રીતે, આવું કંઈક

#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 કોર્પોરેશનમાં પૂર્ણ-સમય કાર્યરત છે. જ્યારે તેઓ બ્લોગિંગ કરતા નથી, ત્યારે તેઓ પોતાનો ફાજલ સમય વિવિધ રુચિઓ, શોખ અને પ્રવૃત્તિઓ પર વિતાવે છે, જે આ વેબસાઇટ પર આવરી લેવામાં આવેલા વિવિધ વિષયોમાં પ્રતિબિંબિત થઈ શકે છે.