ડાયનેમિક્સ 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 ફંક્શન માટે ફોર્મેટ સ્ટ્રિંગ તરીકે મેક્રોનો ઉપયોગ કરવાનો પ્રયાસ કર્યો અને તે કામ કરતું ન હતું. તેણે % પેરામીટર્સને સંપૂર્ણપણે અવગણ્યા અને ફક્ત બાકીની સ્ટ્રિંગ પરત કરી.
તેમાં તપાસ કર્યા પછી, મને ખબર પડી કે મેક્રોનો ઉપયોગ સ્ટ્રિંગ્સને ફોર્મેટ કરવા માટે પણ થઈ શકે છે, જે મને ખબર નહોતી. સારું, કંઈક નવું શીખવું હંમેશા સારું છે, પરંતુ મને હજુ પણ ખૂબ જ આશ્ચર્ય થયું કે મને આ પહેલાં ક્યારેય મળ્યું નથી.
મૂળભૂત રીતે, કંઈક આવું
;
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 માં ડેટા () અને buf2Buf() વચ્ચેનો તફાવત
- ડાયનેમિક્સ AX 2012 માં X++ માંથી સીધેસીધી એઆઈએફ દસ્તાવેજ સેવાઓને કોલ કરી રહ્યા છે
