Miklix

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

Gepubliceerd: 15 februari 2025 om 22:53:55 UTC
Laatst bijgewerkt: 12 januari 2026 om 08:41:06 UTC

Dit artikel legt de verschillen uit tussen de methoden buf2Buf() en data() in Dynamics AX 2012, inclusief wanneer het gepast is om welke te gebruiken en een voorbeeld van X++-code.


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. Deze informatie is mogelijk niet geldig voor andere versies.

Wanneer je in Dynamics AX de waarde van alle velden van de ene tabelbuffer naar de andere moet kopiëren, doe je dat traditioneel als volgt:

toTable.data(fromTable);

Dit werkt goed en is in de meeste gevallen de beste aanpak.

Je hebt echter ook de mogelijkheid om in plaats daarvan de functie buf2Buf te gebruiken:

buf2Buf(fromTable, toTable);

Dit werkt ook prima. Wat is dan het verschil?

Het verschil is dat buf2Buf geen systeemvelden kopieert. Systeemvelden omvatten velden zoals RecId, TableId en, wellicht het belangrijkst in deze context, DataAreaId. De reden dat die laatste het belangrijkst is, is dat je buf2Buf() in plaats van data() meestal gebruikt bij het dupliceren van records tussen bedrijfsaccounts, doorgaans met behulp van het trefwoord changeCompany.

Stel bijvoorbeeld dat u bij het bedrijf "dat" werkt en een ander bedrijf genaamd "com" hebt waarvan u alle gegevens in CustTable wilt kopiëren:

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

In dit geval werkt het omdat buf2Buf alle veldwaarden, behalve systeemvelden, naar de nieuwe buffer kopieert. Als je in plaats daarvan data() had gebruikt, zou de nieuwe record in de bedrijfsrekeningen van "com" zijn ingevoegd, omdat die waarde dan ook naar de nieuwe buffer zou zijn gekopieerd.

(Eigenlijk zou dat een foutmelding over een dubbele sleutel hebben opgeleverd, maar dat is ook niet wat je wilt).

Verder lezen

Als je dit bericht leuk vond, vind je deze suggesties misschien ook interessant:


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

Mikkel Christensen

Over de auteur

Mikkel 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.