Miklix

Cara Mengulangi Elemen Enum dari Kode X++ di Dynamics AX 2012

Diterbitkan: 15 Februari 2025 pukul 23.10.37 UTC

Artikel ini menjelaskan cara menghitung dan melakukan pengulangan elemen enum dasar di Dynamics AX 2012, termasuk contoh kode X++.


Halaman ini diterjemahkan oleh mesin dari bahasa Inggris agar dapat diakses oleh sebanyak mungkin orang. Sayangnya, terjemahan mesin belum merupakan teknologi yang sempurna, sehingga kesalahan dapat terjadi. Jika Anda mau, Anda dapat melihat versi bahasa Inggris aslinya di sini:

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

Informasi dalam posting ini berdasarkan Dynamics AX 2012 R3. Informasi ini mungkin berlaku atau tidak berlaku untuk versi lain.

Saya baru-baru ini membuat formulir yang perlu menampilkan nilai untuk setiap elemen dalam enum. Daripada membuat kolom secara manual (dan kemudian perlu mempertahankan formulir jika enum dimodifikasi), saya memutuskan untuk mengimplementasikannya secara dinamis sehingga secara otomatis akan menambahkan kolom ke desain saat dijalankan.

Namun, saya segera menyadari bahwa sebenarnya mengulangi nilai-nilai dalam enum, meskipun cukup mudah jika Anda tahu caranya, agak membingungkan.

Anda tentu perlu memulai dengan kelas DictEnum. Seperti yang akan Anda lihat, kelas ini memiliki beberapa metode untuk memperoleh informasi seperti nama dan label dari indeks dan nilai.

Perbedaan antara index dan value adalah bahwa index adalah nomor elemen dalam enum, jika elemen-elemen enum diberi nomor berurutan mulai dari nol, sedangkan value adalah properti "nilai" elemen yang sebenarnya. Karena sebagian besar enum memiliki nilai yang diberi nomor berurutan dari 0, index dan value elemen akan sering sama, tetapi tentu saja tidak selalu .

Namun, bagaimana Anda mengetahui nilai apa saja yang dimiliki enum? Di sinilah letak kebingungannya. Kelas DictEnum memiliki metode yang disebut values(). Anda mungkin berharap metode ini akan mengembalikan daftar nilai enum, tetapi itu jelas terlalu mudah, jadi metode ini malah mengembalikan jumlah nilai yang dimiliki enum. Namun, jumlah nilai tidak ada hubungannya dengan nilai sebenarnya, jadi Anda perlu menggunakan angka ini sebagai dasar untuk memanggil metode berbasis indeks, bukan metode berbasis nilai.

Kalau saja mereka memberi nama metode ini indexes(), akan lebih mudah dipahami ;-)

Perlu diingat juga bahwa nilai enum (dan tampaknya "indeks" ini) dimulai dari 0, tidak seperti indeks array dan kontainer di X++, yang dimulai dari 1, jadi untuk mengulang elemen dalam enum, Anda dapat melakukan sesuatu seperti ini:

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)));
}

Ini akan menampilkan simbol dan label setiap elemen dalam enum ke infolog.

Bagikan di BlueskyBagikan di FacebookBagikan di LinkedInBagikan di TumblrBagikan di XBagikan di LinkedInPin di Pinterest

Mikkel Bang Christensen

Tentang Penulis

Mikkel Bang Christensen
Mikkel adalah pencipta dan pemilik miklix.com. Dia memiliki lebih dari 20 tahun pengalaman sebagai pemrogram komputer profesional/pengembang perangkat lunak dan saat ini bekerja penuh waktu di sebuah perusahaan IT besar di Eropa. Ketika tidak menulis blog, ia menghabiskan waktu luangnya untuk beragam minat, hobi, dan kegiatan, yang mungkin sampai batas tertentu tercermin dalam berbagai topik yang dibahas di situs web ini.