Miklix

A különbség a data() és a buf2Buf() között a Dynamics AX 2012-ben

Megjelent: 2025. február 15. 22:53:45 UTC

Ez a cikk elmagyarázza a Dynamics AX 2012 buf2Buf() és data() metódusai közötti különbségeket, ideértve azt is, hogy mikor célszerű mindegyiket használni, valamint egy X++ kódpéldát.


Ezt az oldalt angolból gépi fordítással készítettük, hogy minél több ember számára elérhető legyen. Sajnos a gépi fordítás még nem tökéletes technológia, ezért előfordulhatnak hibák. Ha szeretné, itt megtekintheti az eredeti angol nyelvű változatot:

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

A bejegyzésben található információk a Dynamics AX 2012 R3-on alapulnak. Lehet, hogy más verziókra érvényes, de lehet, hogy nem.

Ha át kell másolnia az összes mező értékét az egyik táblapufferből a másikba a Dynamics AX-ben, akkor hagyományosan a következőket kell tennie:

toTable.data(fromTable);

Ez jól működik, és a legtöbb esetben ez a helyes út.

Lehetősége van azonban a buf2Buf függvény használatára is:

buf2Buf(fromTable, toTable);

Ez is jól működik. Szóval mi a különbség?

A különbség az, hogy a buf2Buf nem másolja a rendszermezőket. A rendszermezők olyan mezőket tartalmaznak, mint a RecId, TableId, és ebben az összefüggésben talán a legfontosabb a DataAreaId. Ez utóbbi a legfontosabb oka, hogy a legjellemzőbb eset, amikor a data() helyett a buf2Buf() függvényt használja, az az, amikor rekordokat másol a vállalati számlák között, jellemzően a changeCompany kulcsszó használatával.

Például, ha Ön a "dat" cég tagja, és van egy másik "com" nevű cége, amelyről a CustTable összes rekordját át szeretné másolni:

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

Ebben az esetben ez működni fog, mert a buf2Buf a rendszermezők kivételével minden mezőértéket az új pufferbe másol. Ha helyette a data()-t használta volna, az új rekord bekerült volna a "com" vállalati számlákba, mert ez az érték is az új pufferbe másolódott volna.

(Igazából ez duplikált kulcshibát eredményezett volna, de nem is ezt szeretnéd).

Oszd meg a Bluesky-nOszd meg a FacebookonOszd meg a LinkedIn-enOszd meg a Tumblr-enOszd meg X-enOszd meg a LinkedIn-enPin a Pinteresten

Mikkel Bang Christensen

A szerzőről

Mikkel Bang Christensen
Mikkel a miklix.com létrehozója és tulajdonosa. Több mint 20 éves tapasztalattal rendelkezik, mint hivatásos számítógépes programozó/szoftverfejlesztő, és jelenleg teljes munkaidőben dolgozik egy nagy európai informatikai vállalatnál. Amikor nem blogol, szabadidejét érdeklődési körének, hobbijainak és tevékenységeinek széles skálájával tölti, ami bizonyos mértékig tükröződhet a weboldalon tárgyalt témák sokféleségében.