Miklix

ਡਾਇਨਾਮਿਕਸ AX 2012 ਵਿੱਚ X++ ਕੋਡ ਤੋਂ ਇੱਕ Enum ਦੇ ਤੱਤਾਂ ਨੂੰ ਕਿਵੇਂ ਦੁਹਰਾਇਆ ਜਾਵੇ

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

ਇਹ ਲੇਖ ਦੱਸਦਾ ਹੈ ਕਿ ਡਾਇਨਾਮਿਕਸ AX 2012 ਵਿੱਚ ਇੱਕ ਬੇਸ ਐਨਮ ਦੇ ਤੱਤਾਂ ਨੂੰ ਕਿਵੇਂ ਗਿਣਨਾ ਹੈ ਅਤੇ ਲੂਪ ਕਰਨਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਇੱਕ X++ ਕੋਡ ਉਦਾਹਰਣ ਵੀ ਸ਼ਾਮਲ ਹੈ।


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

How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012

ਇਸ ਪੋਸਟ ਵਿਚ ਦਿੱਤੀ ਜਾਣਕਾਰੀ ਡਾਈਨਾਮਿਕਸ ਏਐਕਸ 2012 ਆਰ3 'ਤੇ ਆਧਾਰਿਤ ਹੈ। ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਦੂਜੇ ਵਰਜਨ ਲਈ ਸਹੀ ਨਾ ਹੋਵੇ।

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

ਹਾਲਾਂਕਿ, ਮੈਨੂੰ ਜਲਦ ਹੀ ਇਹ ਪਤਾ ਲੱਗਾ ਕਿ ਐਨਮ ਵਿਚ ਮੁੱਲਾਂ 'ਤੇ ਇਟਰੇਟ ਕਰਨਾ, ਜਦੋਂ ਤੁਸੀਂ ਇਹ ਜਾਣ ਲੈਂਦੇ ਹੋ ਕਿ ਕਿਵੇਂ, ਕੁਝ ਹਦ ਤੱਕ ਕਨਫਿਊਜ਼ਿੰਗ ਹੁੰਦਾ ਹੈ।

ਤੁਹਾਨੂੰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ DictEnum ਕਲਾਸ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨਾ ਪਵੇਗਾ। ਜਿਵੇਂ ਤੁਸੀਂ ਦੇਖੋਂਗੇ, ਇਸ ਕਲਾਸ ਵਿੱਚ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕਈ ਢੰਗ ਹਨ, ਜਿਵੇਂ ਨਾਮ ਅਤੇ ਲੇਬਲ ਨੂੰ ਇੰਡੈਕਸ ਅਤੇ ਮੁੱਲ ਦੋਹਾਂ ਤੋਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ।

ਇੰਡੈਕਸ ਅਤੇ ਮੁੱਲ ਵਿਚ ਅੰਤਰ ਇਹ ਹੈ ਕਿ ਇੰਡੈਕਸ ਇੱਕ ਤੱਤ ਦਾ ਨੰਬਰ ਹੈ ਐਨਮ ਵਿੱਚ, ਜੇਕਰ ਐਨਮ ਦੇ ਤੱਤ ਜ਼ੀਰੋ ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹੋਏ ਕ੍ਰਮਵਾਰ ਨੰਬਰਿਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਜਦਕਿ ਮੁੱਲ ਉਸ ਤੱਤ ਦੀ ਅਸਲ "ਮੁੱਲ" ਸੰਪਤੀ ਹੈ। ਜਿਵੇਂ ਕਿ ਜ਼ਿਆਦਾਤਰ ਐਨਮ ਦੇ ਮੁੱਲ ਕ੍ਰਮਵਾਰ 0 ਤੋਂ ਨੰਬਰਿਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਇਸ ਲਈ ਇੱਕ ਤੱਤ ਦਾ ਇੰਡੈਕਸ ਅਤੇ ਮੁੱਲ ਅਕਸਰ ਇਕੱਠੇ ਹੁੰਦੇ ਹਨ, ਪਰ ਬਿਲਕੁਲ ਹਮੇਸ਼ਾ ਨਹੀਂ।

ਪਰ ਤੁਸੀਂ ਕਿਵੇਂ ਜਾਣੋਗੇ ਕਿ ਕਿਸ ਕਿਸਮ ਦੇ ਮੁੱਲ ਐਨਮ ਵਿੱਚ ਹਨ? ਇੱਥੇ ਇਹ ਕੁਝ ਕਨਫਿਊਜ਼ਿੰਗ ਹੋ ਜਾਂਦਾ ਹੈ। DictEnum ਕਲਾਸ ਵਿੱਚ ਇੱਕ ਢੰਗ ਹੈ ਜਿਸਨੂੰ values() ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਤੁਸੀਂ ਇਸ ਢੰਗ ਤੋਂ ਉਮੀਦ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਐਨਮ ਦੇ ਮੁੱਲਾਂ ਦੀ ਸੂਚੀ ਵਾਪਸ ਕਰੇਗਾ, ਪਰ ਇਹ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਬਹੁਤ ਆਸਾਨ ਹੁੰਦਾ, ਇਸ ਲਈ ਇਸ ਦੇ ਬਦਲੇ ਇਹ ਐਨਮ ਵਿੱਚ ਮੌਜੂਦ ਮੁੱਲਾਂ ਦੀ ਸੰਖਿਆ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਮੁੱਲਾਂ ਦੀ ਸੰਖਿਆ ਦਾ ਅਸਲ ਮੁੱਲਾਂ ਨਾਲ ਕੋਈ ਸੰਬੰਧ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਤੁਹਾਨੂੰ ਇਸ ਸੰਖਿਆ ਨੂੰ ਇੰਡੈਕਸ-ਅਧਾਰਿਤ ਢੰਗ ਨੂੰ ਕਾਲ ਕਰਨ ਲਈ ਬੇਸਿਕ ਸਮਝਣਾ ਪਵੇਗਾ, ਨਾ ਕਿ ਮੁੱਲ-ਅਧਾਰਿਤ ਢੰਗ ਨੂੰ।

ਜੇਕਰ ਉਨ੍ਹਾਂ ਨੇ ਇਸ ਢੰਗ ਨੂੰ indexes() ਨਾਮ ਨਹੀਂ ਦਿੱਤਾ ਹੁੰਦਾ, ਤਾਂ ਇਹ ਘੱਟ ਕਨਫਿਊਜ਼ਿੰਗ ਹੁੰਦਾ ;-)

ਇਹ ਵੀ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਐਨਮ ਮੁੱਲ (ਅਤੇ ਲੱਗਦਾ ਹੈ ਕਿ ਇਹ "ਇੰਡੈਕਸ") 0 ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਐਰੇ ਅਤੇ ਕੰਟੇਨਰ ਇੰਡੈਕਸ X++ ਵਿੱਚ 1 ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ, ਇਸ ਲਈ ਐਨਮ ਵਿੱਚ ਤੱਤਾਂ 'ਤੇ ਲੂਪ ਕਰਨ ਲਈ ਤੁਸੀਂ ਇਸ ਤਰ੍ਹਾਂ ਕੁਝ ਕਰ ਸਕਦੇ ਹੋ:

DictEnum dictEnum = new DictEnum(enumNum(SalesStatus));
Counter  c;
;

for (c = 0; c < dictEnum.values(); c++)
{
    info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}

ਇਹ ਐਨਮ ਵਿੱਚ ਹਰ ਤੱਤ ਦੇ ਚਿੰਨ੍ਹ ਅਤੇ ਲੇਬਲ ਨੂੰ ਇਨਫੋਲਾਗ ਵਿੱਚ ਆਉਟਪੁੱਟ ਕਰੇਗਾ।

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

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

ਲੇਖਕ ਬਾਰੇ

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