Miklix

Het verschil tussen data() en buf2Buf() in Dynamics AX 2012

Gepubliceerd: 15 februari 2025 om 22:53:55 UTC

In dit artikel worden de verschillen tussen de methoden buf2Buf() en data() in Dynamics AX 2012 uitgelegd. Ook wordt uitgelegd wanneer het het beste is om beide te gebruiken en wordt een X++-codevoorbeeld gegeven.


Deze pagina is machinaal uit het Engels vertaald om hem voor zoveel mogelijk mensen toegankelijk te maken. Helaas is machinevertaling nog geen geperfectioneerde technologie, dus er kunnen fouten optreden. Als je dat liever hebt, kun je hier de originele Engelse versie bekijken:

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

De informatie in dit bericht is gebaseerd op Dynamics AX 2012 R3. Het kan wel of niet geldig zijn voor andere versies.

Wanneer u de waarde van alle velden van de ene tabelbuffer naar de andere in Dynamics AX moet kopiƫren, doet u doorgaans het volgende:

toTable.data(fromTable);

Dit werkt goed en is in de meeste gevallen de juiste oplossing.

U kunt er echter ook voor kiezen om de buf2Buf-functie te gebruiken:

buf2Buf(fromTable, toTable);

Dit werkt ook goed. Wat is dan het verschil?

Het verschil is dat buf2Buf geen systeemvelden kopieert. Systeemvelden omvatten velden zoals RecId, TableId en misschien wel het belangrijkste in deze context, DataAreaId. De reden dat de laatste het belangrijkst is, is dat het meest typische geval waarin u buf2Buf() zou gebruiken in plaats van data() is bij het dupliceren van records tussen bedrijfsaccounts, meestal door gebruik te maken van het sleutelwoord changeCompany.

Stel dat u bijvoorbeeld bij het bedrijf "dat" zit en een ander bedrijf met de naam "com" hebt waarvan u alle records in CustTable wilt kopiƫren:

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

In dit geval zal het werken omdat buf2Buf alle veldwaarden kopieert, behalve systeemvelden naar de nieuwe buffer. Als u in plaats daarvan data() had gebruikt, zou de nieuwe record in de "com"-bedrijfsaccounts zijn ingevoegd, omdat die waarde ook naar de nieuwe buffer zou zijn gekopieerd.

(Eigenlijk zou dit hebben geresulteerd in een fout met betrekking tot de dubbele sleutel, maar dat is ook niet wat u wilt.)

Delen op BlueskyDelen op FacebookDelen op LinkedInDelen op TumblrDelen op XDelen op LinkedInPin op Pinterest

Mikkel Bang Christensen

Over de auteur

Mikkel Bang Christensen
Mikkel is de bedenker en eigenaar van miklix.com. Hij heeft meer dan 20 jaar ervaring als professioneel computerprogrammeur/softwareontwikkelaar en werkt momenteel fulltime voor een groot Europees IT-bedrijf. Als hij niet blogt, besteedt hij zijn vrije tijd aan een breed scala aan interesses, hobby's en activiteiten, die tot op zekere hoogte weerspiegeld kunnen worden in de verscheidenheid aan onderwerpen op deze website.