Miklix

Perbezaan Antara data() dan buf2Buf() dalam Dynamics AX 2012

Diterbitkan: 19 Mac 2025 pada 9:32:33 PTG UTC

Artikel ini menerangkan perbezaan antara kaedah buf2Buf() dan data() dalam Dynamics AX 2012, termasuk masa yang sesuai untuk menggunakan setiap satu dan contoh kod X++.


Halaman ini telah diterjemahkan mesin daripada bahasa Inggeris untuk menjadikannya boleh diakses oleh seramai mungkin orang. Malangnya, terjemahan mesin belum lagi merupakan teknologi yang sempurna, jadi ralat boleh berlaku. Jika anda mahu, anda boleh melihat versi bahasa Inggeris asal di sini:

The Difference Between data() and buf2Buf() in Dynamics AX 2012

Maklumat dalam pos ini adalah berdasarkan Dynamics AX 2012 R3. Ia mungkin sah atau tidak sah untuk versi lain.

Apabila anda perlu menyalin nilai semua medan dari satu penampan jadual ke penampan lain dalam Dynamics AX, secara tradisinya anda akan melakukan sesuatu seperti:

toTable.data(fromTable);

Ini berfungsi dengan baik dan dalam kebanyakan kes adalah cara untuk dilakukan.

Walau bagaimanapun, anda juga mempunyai pilihan untuk menggunakan fungsi buf2Buf sebagai ganti:

buf2Buf(fromTable, toTable);

Ini juga berfungsi dengan baik. Jadi, apakah perbezaannya?

Perbezaannya ialah buf2Buf tidak menyalin medan sistem. Medan sistem termasuk medan seperti RecId, TableId, dan mungkin yang paling penting dalam konteks ini, DataAreaId. Sebab yang terakhir adalah yang paling penting kerana kes yang paling tipikal di mana anda akan menggunakan buf2Buf() berbanding data() adalah apabila menduplikasi rekod antara akaun syarikat, biasanya dengan menggunakan kata kunci changeCompany.

Contohnya, jika anda berada di syarikat "dat" dan mempunyai syarikat lain yang dipanggil "com" yang anda ingin salin semua rekod dalam CustTable daripadanya:

while select crossCompany : ['com'] custTableFrom
{
    buf2Buf(custTableFrom, custTableTo);
    custTableTo.insert();
}

Dalam kes ini, ia akan berfungsi kerana buf2Buf menyalin semua nilai medan, kecuali medan sistem ke penampan baru. Sekiranya anda menggunakan data() sebagai ganti, rekod baru akan dimasukkan ke dalam akaun syarikat "com" kerana nilai itu juga akan disalin ke penampan baru.

(Sebenarnya, ia akan mengakibatkan ralat kunci pendua, tetapi itu bukan yang anda inginkan juga).

Kongsi di BlueskyKongsi di FacebookKongsi di LinkedInKongsi di TumblrKongsi di XKongsi di LinkedInSematkan pada Pinterest

Mikkel Christensen

Mengenai Pengarang

Mikkel Christensen
Mikkel ialah pencipta dan pemilik miklix.com. Beliau mempunyai lebih 20 tahun pengalaman sebagai pengaturcara komputer/pembangun perisian profesional dan kini bekerja sepenuh masa untuk sebuah syarikat IT Eropah yang besar. Apabila tidak menulis blog, dia menghabiskan masa lapangnya dengan pelbagai minat, hobi dan aktiviti, yang mungkin sedikit sebanyak dapat dilihat dalam pelbagai topik yang diliputi di laman web ini.