Miklix

ડાયનેમિક્સ એએક્સ 2012 માં SysOperation Data કોન્ટ્રાક્ટ ક્લાસમાં ક્વેરીનો ઉપયોગ કરીને

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

આ લેખ ડાયનેમિક્સ AX 2012 (અને ડાયનેમિક્સ 365 ફોર ઓપરેશન્સ) માં SysOperation ડેટા કોન્ટ્રાક્ટ ક્લાસમાં વપરાશકર્તા-રૂપરેખાંકન અને ફિલ્ટર કરી શકાય તેવા પ્રશ્નને કેવી રીતે ઉમેરવો તેની વિગતો પર આધારિત છે.


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

Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012

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

હું હંમેશાં સિસ ઓપરેશન ફ્રેમવર્કમાં ક્વેરીને કેવી રીતે સ્પષ્ટ અને પ્રારંભ કરવો તે અંગેની વિગતો ભૂલી ગયો હોય તેવું લાગે છે. હું માનું છું કે હું જે બેચ જોબ કરું છું તેમાંની મોટાભાગની યુઝર-કોન્ફિગરેબલ ક્વેરીઝ પર આધારિત નથી, પરંતુ અવારનવાર મારે આવી બેચ જોબ કરવાની જરૂર પડે છે, તેથી આ પોસ્ટ પણ મારા પોતાના સંદર્ભ માટે છે.

પ્રથમ, ડેટા કોન્ટ્રાક્ટ ક્લાસમાં, ક્વેરીને શબ્દમાળામાં પેક કરવામાં આવશે. તેની parm પદ્ધતિને AifQueryTypeAttribute લક્ષણથી સજાવવી આવશ્યક છે, જેમ કે (આ ઉદાહરણમાં મેં SalesUpdate ક્વેરીનો ઉપયોગ કર્યો છે, પરંતુ તમે તેને કોઈપણ AOT ક્વેરી સાથે બદલી શકો છો):

[
    DataMemberAttribute,
    AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
    ;

    packedQuery = _packedQuery;
    return packedQuery;
}

જો તમે ઈચ્છો છો કે ક્વેરીને તેના બદલે નિયંત્રક વર્ગ દ્વારા નક્કી કરવામાં આવે, તો તમે ખાલી શબ્દમાળાનો ઉપયોગ પણ કરી શકો છો. તે કિસ્સામાં, તમારે કેટલીક સહાયક પદ્ધતિઓનો અમલ કરવાની પણ જરૂર છે (જ્યારે તમારે પ્રશ્નને ઍક્સેસ કરવાની જરૂર હોય ત્યારે તમારે તમારી પોતાની અનુકૂળતા માટે કોઈપણ રીતે અમલમાં મૂકવું જોઈએ):

public Query getQuery()
{
    ;

    return new Query(SysOperationHelper::base64Decode(packedQuery));
}

public void setQuery(Query _query)
{
    ;

    packedQuery = SysOperationHelper::base64Encode(_query.pack());
}

જો તમારે પ્રશ્નનો આરંભ કરવાની જરૂર હોય (ઉદાહરણ તરીકે, વિસ્તારો ઉમેરો), તો તમારે initQuery પદ્દતિ અમલમાં મૂકવી જોઈએ:

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

તમારે નિયંત્રક વર્ગમાંથી આ પદ્ધતિને કોલ કરવાની ખાતરી કરવાની જરૂર છે.

બ્લુસ્કી પર શેર કરોફેસબુક પર શેર કરોLinkedIn પર શેર કરોટમ્બલર પર શેર કરોX પર શેર કરોLinkedIn પર શેર કરોPinterest પર પિન કરો

મિકેલ બેંગ ક્રિસ્ટેનસેન

લેખક વિશે

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