Miklix

Dynamics AX 2012'de data() ve buf2Buf() Arasındaki Fark

Yayınlandı: 15 Şubat 2025 22:54:05 UTC

Bu makalede Dynamics AX 2012'deki buf2Buf() ve data() yöntemleri arasındaki farklar açıklanmakta, her birinin ne zaman kullanılmasının uygun olduğu ve bir X++ kod örneği verilmektedir.


Bu sayfa, mümkün olduğunca çok kişi tarafından erişilebilir olması amacıyla İngilizce'den makine çevirisiyle çevrilmiştir. Ne yazık ki, makine çevirisi henüz mükemmelleştirilmiş bir teknoloji değildir, bu nedenle hatalar meydana gelebilir. Tercih ederseniz, orijinal İngilizce versiyonu buradan görüntüleyebilirsiniz:

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

Bu gönderideki bilgiler Dynamics AX 2012 R3'e dayanmaktadır. Diğer sürümler için geçerli olabilir veya olmayabilir.

Dynamics AX'te tüm alanların değerini bir tablo tamponundan diğerine kopyalamanız gerektiğinde, geleneksel olarak şu şekilde bir şey yaparsınız:

toTable.data(fromTable);

Bu işe yarar ve çoğu durumda doğru yoldur.

Ancak bunun yerine buf2Buf fonksiyonunu kullanma seçeneğiniz de var:

buf2Buf(fromTable, toTable);

Bu da işe yarıyor. Peki fark ne?

Fark, buf2Buf'un sistem alanlarını kopyalamamasıdır. Sistem alanları, RecId, TableId ve belki de bu bağlamda en önemlisi DataAreaId gibi alanları içerir. İkincisinin en önemli olmasının nedeni, buf2Buf()'u data() yerine kullanacağınız en tipik durumun, şirket hesapları arasında kayıtları çoğaltırken, genellikle changeCompany anahtar sözcüğünü kullanarak olmasıdır.

Örneğin, "dat" şirketinde çalışıyorsanız ve CustTable'daki tüm kayıtları kopyalamak istediğiniz "com" adında başka bir şirketiniz varsa:

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

Bu durumda, buf2Buf tüm alan değerlerini, sistem alanları hariç, yeni tampona kopyaladığı için işe yarayacaktır. Bunun yerine data() kullanmış olsaydınız, yeni kayıt "com" şirket hesaplarına eklenmiş olurdu çünkü bu değer de yeni tampona kopyalanmış olurdu.

(Aslında bu, bir yinelenen anahtar hatasıyla sonuçlanabilirdi, ancak bu da istediğiniz bir şey değil).

Bluesky'de paylaşFacebook'ta paylaşLinkedIn'de paylaşTumblr'da paylaşX'te paylaşLinkedIn'de paylaşPinterest'e Pinleyin

Mikkel Bang Christensen

Yazar Hakkında

Mikkel Bang Christensen
Mikkel miklix.com'un yaratıcısı ve sahibidir. Profesyonel bilgisayar programcısı/yazılım geliştiricisi olarak 20 yılı aşkın deneyime sahiptir ve şu anda büyük bir Avrupa BT şirketinde tam zamanlı olarak çalışmaktadır. Blog yazmadığı zamanlarda, boş zamanlarını çok çeşitli ilgi alanları, hobiler ve aktivitelerle geçirmektedir ve bu da bir dereceye kadar bu web sitesinde kapsanan konuların çeşitliliğine yansıyabilir.