Pemformatan String dengan Makro dan strFmt di Dynamics AX 2012
Diterbitkan: 16 Februari 2025 pukul 00.48.29 UTC
Terakhir diperbarui: 12 Januari 2026 pukul 08.44.26 UTC
Artikel ini menjelaskan beberapa perilaku aneh di Dynamics AX 2012 saat menggunakan makro sebagai string format di strFmt, serta contoh cara mengatasinya.
String Formatting with Macro and strFmt in Dynamics AX 2012
Informasi dalam posting ini didasarkan pada Dynamics AX 2012 R3. Informasi ini mungkin berlaku atau mungkin tidak berlaku untuk versi lain.
Baru-baru ini saya menemukan masalah dengan fungsi strFmt yang membuat saya bingung untuk beberapa saat. Bagian yang paling membingungkan adalah, secara kebetulan yang aneh, saya belum pernah menemui masalah ini sebelumnya selama bertahun-tahun sebagai pengembang Axapta/Dynamics AX.
Masalahnya adalah saya mencoba menggunakan makro sebagai string format untuk fungsi strFmt dan itu sama sekali tidak berhasil. Makro tersebut sepenuhnya mengabaikan parameter % dan hanya mengembalikan sisa string.
Setelah menelitinya, saya menemukan bahwa makro itu sendiri dapat digunakan untuk memformat string, yang juga merupakan sesuatu yang belum saya ketahui. Yah, selalu baik untuk mempelajari sesuatu yang baru, tetapi saya tetap sangat terkejut bahwa saya belum pernah menemukan hal ini sebelumnya.
Pada dasarnya, sesuatu seperti ini
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Ini tidak akan berfungsi karena tanda % dalam makro sebenarnya digunakan untuk fitur pemformatan string makro itu sendiri. Dalam hal ini, fungsi strFmt akan melihat string pemformatan sebagai "--" dan oleh karena itu hanya akan mengembalikan itu.
Kurang lebih seperti ini:
info(#FormatMacro(salesId,itemId,lineNum));
Ini akan berfungsi, tetapi mungkin tidak sesuai keinginan Anda. Alih-alih menampilkan nilai dari ketiga variabel, makro ini akan menampilkan nama variabelnya, dalam hal ini "salesId-itemId-lineNum". (Perhatikan bahwa saya tidak menambahkan spasi setelah koma saat memberikan parameter ke makro, seperti yang biasanya saya lakukan dalam panggilan metode. Itu karena makro sebenarnya juga akan menggunakan spasi tersebut, sehingga outputnya akan menjadi "salesId-itemId-lineNum" jika saya melakukannya).
Untuk benar-benar menggunakan makro sebagai string pemformatan dengan strFmt, Anda perlu mengescape tanda persen dengan garis miring terbalik, seperti ini:
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Ini akan berfungsi seolah-olah Anda telah memberikan string format secara langsung.
Pekerjaan kecil ini mengilustrasikan contoh-contohnya:
{
#define.FormatMacro('%1-%2-%3')
#define.FormatMacroEscaped('\\%1-\\%2-\\%3')
SalesId salesId = '1';
ItemId itemId = '2';
LineNum lineNum = 3.00;
;
info(#FormatMacro(salesId,itemId,lineNum));
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
info(strFmt(#FormatMacroEscaped, salesId, itemId, lineNum));
}
Bacaan Lebih Lanjut
Jika Anda menikmati postingan ini, Anda mungkin juga menyukai saran berikut:
- Mengidentifikasi Kelas Dokumen dan Kueri untuk Layanan AIF di Dynamics AX 2012
- Perbedaan Antara data() dan buf2Buf() di Dynamics AX 2012
- Ringkasan Cepat Kerangka Kerja SysOperation Dynamics AX 2012
