ડાયનેમિક્સ એએક્સ 2012 માં SysOperation Data કોન્ટ્રાક્ટ ક્લાસમાં ક્વેરીનો ઉપયોગ કરીને
પ્રકાશિત: 16 ફેબ્રુઆરી, 2025 એ 01:25:40 AM UTC વાગ્યે
છેલ્લે અપડેટ કરેલ: 12 જાન્યુઆરી, 2026 એ 08:47:36 AM UTC વાગ્યે
આ લેખ ડાયનેમિક્સ AX 2012 (અને ઓપરેશન્સ માટે ડાયનેમિક્સ 365) માં SysOperation ડેટા કોન્ટ્રેક્ટ ક્લાસમાં વપરાશકર્તા-રૂપરેખાંકિત અને ફિલ્ટર કરી શકાય તેવી ક્વેરી કેવી રીતે ઉમેરવી તેની વિગતો આપે છે.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
આ પોસ્ટમાં આપેલી માહિતી ડાયનેમિક્સ AX 2012 R3 પર આધારિત છે. તે અન્ય વર્ઝન માટે માન્ય હોઈ શકે છે અથવા ન પણ હોય શકે. (અપડેટ: હું પુષ્ટિ કરી શકું છું કે આ ઓપરેશન્સ માટે ડાયનેમિક્સ 365 પર પણ કાર્ય કરે છે)
SysOperation ફ્રેમવર્કમાં ક્વેરીને કેવી રીતે સ્પષ્ટ કરવી અને શરૂ કરવી તે અંગેની વિગતો હું હંમેશા ભૂલી જાઉં છું. મને લાગે છે કે હું જે મોટાભાગની બેચ જોબ્સ કરી રહ્યો છું તે યુઝર-કન્ફિગરેબલ ક્વેરીઝ પર આધારિત નથી, પરંતુ ક્યારેક ક્યારેક મને આવી બેચ જોબ કરવાની જરૂર પડે છે, તેથી આ પોસ્ટ મારા પોતાના સંદર્ભ માટે પણ છે.
સૌપ્રથમ, ડેટા કોન્ટ્રાક્ટ ક્લાસમાં, ક્વેરી એક સ્ટ્રિંગમાં પેક કરીને સ્ટોર કરવામાં આવશે. તેની parm પદ્ધતિ AifQueryTypeAttribute એટ્રીબ્યુટથી શણગારેલી હોવી જોઈએ, જેમ કે (આ ઉદાહરણમાં મેં SalesUpdate ક્વેરીનો ઉપયોગ કર્યો છે, પરંતુ તમે તેને કોઈપણ AOT ક્વેરીથી બદલી શકો છો):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
જો તમે ઇચ્છો છો કે ક્વેરી કંટ્રોલર ક્લાસ દ્વારા નક્કી કરવામાં આવે, તો તમે ખાલી સ્ટ્રિંગનો પણ ઉપયોગ કરી શકો છો. તે કિસ્સામાં, તમારે કેટલીક સહાયક પદ્ધતિઓ પણ અમલમાં મૂકવાની જરૂર છે (જે તમારે ક્વેરી ઍક્સેસ કરવાની જરૂર હોય ત્યારે તમારી પોતાની સુવિધા માટે કોઈપણ રીતે અમલમાં મૂકવી જોઈએ):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
જો તમારે ક્વેરી શરૂ કરવાની જરૂર હોય (ઉદાહરણ તરીકે, રેન્જ ઉમેરો), તો તમારે initQuery પદ્ધતિ અમલમાં મૂકવી જોઈએ:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
તમારે આ પદ્ધતિને નિયંત્રક વર્ગમાંથી કૉલ કરવાની ખાતરી કરવાની જરૂર છે.
વધુ વાંચન
જો તમને આ પોસ્ટ ગમી હોય, તો તમને આ સૂચનો પણ ગમશે:
- ડાયનેમિક્સ એએક્સ 2012 માં કયા પેટા વર્ગને પ્રારંભ કરવો તે શોધવા માટે SysExtension ફ્રેમવર્કનો ઉપયોગ કરીને
- ડાયનેમિક્સ AX 2012 માં X++ કોડમાંથી એનમના તત્વો પર કેવી રીતે પુનરાવર્તિત કરવું
- ડાયનેમિક્સ AX 2012 માં ડેટા () અને buf2Buf() વચ્ચેનો તફાવત
