Miklix

ਡਾਇਨਾਮਿਕਸ AX 2012 ਵਿੱਚ ਇੱਕ SysOperation ਡੇਟਾ ਕੰਟਰੈਕਟ ਕਲਾਸ ਵਿੱਚ ਇੱਕ ਪੁੱਛਗਿੱਛ ਦੀ ਵਰਤੋਂ ਕਰਨਾ

ਪ੍ਰਕਾਸ਼ਿਤ: 19 ਮਾਰਚ 2025 9:33:33 ਬਾ.ਦੁ. UTC

ਇਹ ਲੇਖ ਡਾਇਨਾਮਿਕਸ AX 2012 (ਅਤੇ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਡਾਇਨਾਮਿਕਸ 365) ਵਿੱਚ ਇੱਕ SysOperation ਡੇਟਾ ਕੰਟਰੈਕਟ ਕਲਾਸ ਵਿੱਚ ਇੱਕ ਉਪਭੋਗਤਾ-ਸੰਰਚਨਾਯੋਗ ਅਤੇ ਫਿਲਟਰਯੋਗ ਪੁੱਛਗਿੱਛ ਨੂੰ ਕਿਵੇਂ ਜੋੜਨਾ ਹੈ, ਇਸ ਬਾਰੇ ਵੇਰਵਿਆਂ 'ਤੇ ਜਾਂਦਾ ਹੈ।


ਇਸ ਪੰਨੇ ਨੂੰ ਵੱਧ ਤੋਂ ਵੱਧ ਲੋਕਾਂ ਤੱਕ ਪਹੁੰਚਯੋਗ ਬਣਾਉਣ ਲਈ ਅੰਗਰੇਜ਼ੀ ਤੋਂ ਮਸ਼ੀਨ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਸੀ। ਬਦਕਿਸਮਤੀ ਨਾਲ, ਮਸ਼ੀਨ ਅਨੁਵਾਦ ਅਜੇ ਇੱਕ ਸੰਪੂਰਨ ਤਕਨਾਲੋਜੀ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਗਲਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਜੇ ਤੁਸੀਂ ਚਾਹੋ, ਤਾਂ ਤੁਸੀਂ ਮੂਲ ਅੰਗਰੇਜ਼ੀ ਸੰਸਕਰਣ ਇੱਥੇ ਦੇਖ ਸਕਦੇ ਹੋ:

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

ਇਸ ਪੋਸਟ ਵਿਚ ਦਿੱਤੀ ਗਈ ਜਾਣਕਾਰੀ Dynamics AX 2012 R3 'ਤੇ ਆਧਾਰਿਤ ਹੈ। ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਹੋਰ ਵਰਜਨਾਂ ਲਈ ਸਹੀ ਨਾ ਹੋਵੇ। (ਅਪਡੇਟ: ਮੈਂ ਪੁਸ਼ਟੀ ਕਰ ਸਕਦਾ ਹਾਂ ਕਿ ਇਹ Dynamics 365 for Operations 'ਤੇ ਵੀ ਕੰਮ ਕਰਦਾ ਹੈ)

ਮੈਨੂੰ ਹਮੇਸ਼ਾਂ ਇਹ ਭੁੱਲ ਜਾਂਦਾ ਹੈ ਕਿ SysOperation ਫਰੇਮਵਰਕ ਵਿੱਚ ਕਿਵੇਂ ਇੱਕ ਕੁਏਰੀ ਨੂੰ ਵਿਸ਼ੇਸ਼ਿਤ ਅਤੇ ਸ਼ੁਰੂ ਕਰਨਾ ਹੈ। ਮੇਰਾ ਅਨੁਮਾਨ ਹੈ ਕਿ ਜਿਆਦਾਤਰ ਬੈਚ ਜੌਬਸ ਜੋ ਮੈਂ ਬਣਾ ਰਿਹਾ ਹਾਂ ਉਹ ਉਪਭੋਗਤਾ-ਕਨਫਿਗਰੇਬਲ ਕੁਏਰੀਜ਼ 'ਤੇ ਆਧਾਰਿਤ ਨਹੀਂ ਹਨ, ਪਰ ਕਦਾਚਿਤ ਮੈਂ ਅਜਿਹੀ ਬੈਚ ਜੌਬ ਬਣਾਉਣ ਦੀ ਲੋੜ ਪੈਂਦੀ ਹੈ, ਇਸ ਲਈ ਇਹ ਪੋਸਟ ਮੇਰੇ ਆਪਣੇ ਹਵਾਲੇ ਲਈ ਵੀ ਹੈ।

ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਡੇਟਾ ਕਾਂਟ੍ਰੈਕਟ ਕਲਾਸ ਵਿੱਚ, ਕੁਏਰੀ ਇੱਕ ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਪੈਕ ਕੀਤੀ ਜਾਵੇਗੀ। ਇਸਦੀ ਪਾਰਮ ਮੈਥਡ ਨੂੰ 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);
}

ਤੁਹਾਨੂੰ ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਇਸ ਮੈਥਡ ਨੂੰ ਕੰਟਰੋਲਰ ਕਲਾਸ ਤੋਂ ਕਾਲ ਕੀਤਾ ਜਾਵੇ।

ਬਲੂਸਕੀ 'ਤੇ ਸਾਂਝਾ ਕਰੋਫੇਸਬੁੱਕ 'ਤੇ ਸਾਂਝਾ ਕਰੋਲਿੰਕਡਇਨ 'ਤੇ ਸਾਂਝਾ ਕਰੋਟਮਬਲਰ 'ਤੇ ਸਾਂਝਾ ਕਰੋX 'ਤੇ ਸਾਂਝਾ ਕਰੋਲਿੰਕਡਇਨ 'ਤੇ ਸਾਂਝਾ ਕਰੋPinterest 'ਤੇ ਪਿੰਨ ਕਰੋ

ਮਿੱਕੇਲ ਕ੍ਰਿਸਟਨਸਨ

ਲੇਖਕ ਬਾਰੇ

ਮਿੱਕੇਲ ਕ੍ਰਿਸਟਨਸਨ
ਮਿਕੇਲ miklix.com ਦਾ ਸਿਰਜਣਹਾਰ ਅਤੇ ਮਾਲਕ ਹੈ। ਉਸਨੂੰ ਇੱਕ ਪੇਸ਼ੇਵਰ ਕੰਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮਰ/ਸਾਫਟਵੇਅਰ ਡਿਵੈਲਪਰ ਵਜੋਂ 20 ਸਾਲਾਂ ਤੋਂ ਵੱਧ ਦਾ ਤਜਰਬਾ ਹੈ ਅਤੇ ਉਹ ਵਰਤਮਾਨ ਵਿੱਚ ਇੱਕ ਵੱਡੇ ਯੂਰਪੀਅਨ ਆਈਟੀ ਕਾਰਪੋਰੇਸ਼ਨ ਲਈ ਪੂਰਾ ਸਮਾਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਉਹ ਬਲੌਗ ਨਹੀਂ ਲਿਖਦਾ, ਤਾਂ ਉਹ ਆਪਣਾ ਖਾਲੀ ਸਮਾਂ ਬਹੁਤ ਸਾਰੀਆਂ ਰੁਚੀਆਂ, ਸ਼ੌਕ ਅਤੇ ਗਤੀਵਿਧੀਆਂ 'ਤੇ ਬਿਤਾਉਂਦਾ ਹੈ, ਜੋ ਕਿ ਕੁਝ ਹੱਦ ਤੱਕ ਇਸ ਵੈੱਬਸਾਈਟ 'ਤੇ ਕਵਰ ਕੀਤੇ ਗਏ ਵਿਸ਼ਿਆਂ ਦੀ ਵਿਭਿੰਨਤਾ ਵਿੱਚ ਪ੍ਰਤੀਬਿੰਬਤ ਹੋ ਸਕਦਾ ਹੈ।