Miklix

Die verskil tussen data () en buf2Buf () in Dynamics AX 2012

Gepubliseer: 15 Februarie 2025 om 22:54:36 UTC
Laas opgedateer: 12 Januarie 2026 om 08:41:22 UTC

Hierdie artikel verduidelik die verskille tussen die buf2Buf() en data() metodes in Dynamics AX 2012, insluitend wanneer dit gepas is om elkeen en 'n X++ kodevoorbeeld te gebruik.


Hierdie bladsy is masjienvertaal uit Engels om dit vir soveel mense moontlik toeganklik te maak. Ongelukkig is masjienvertaling nog nie 'n volmaakte tegnologie nie, dus kan foute voorkom. As jy verkies, kan jy die oorspronklike Engelse weergawe hier sien:

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

Die inligting in hierdie plasing is gebaseer op Dynamics AX 2012 R3. Dit mag dalk geldig wees vir ander weergawes, maar ook nie.

Wanneer jy die waarde van alle velde van een tabelbuffer na 'n ander in Dynamics AX moet kopieer, sou jy tradisioneel iets soos die volgende doen:

toTable.data(fromTable);

Dit werk goed en in die meeste gevalle is dit die pad om te volg.

Jy het egter ook die opsie om die buf2Buf-funksie te gebruik:

buf2Buf(fromTable, toTable);

Dit werk ook goed. So wat is die verskil?

Die verskil is dat buf2Buf nie stelselvelde kopieer nie. Stelselvelde sluit velde soos RecId, TableId, en miskien die belangrikste in hierdie konteks, DataAreaId in. Die rede waarom laasgenoemde die belangrikste is, is dat die mees tipiese geval waar jy buf2Buf() in plaas van data() sou gebruik, is wanneer rekords tussen maatskappyrekeninge gedupliseer word, tipies deur die changeCompany-sleutelwoord te gebruik.

Byvoorbeeld, as jy in die "dat"-maatskappy is en 'n ander maatskappy genaamd "com" het waarvandaan jy alle rekords in CustTable wil kopieer:

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

In hierdie geval sal dit werk omdat buf2Buf alle veldwaardes, behalwe stelselvelde, na die nuwe buffer kopieer. As jy data() eerder gebruik het, sou die nuwe rekord in die "com" maatskappyrekeninge ingevoeg gewees het, want daardie waarde sou ook na die nuwe buffer gekopieer gewees het.

(Eintlik sou dit 'n duplikaatsleutelfout tot gevolg gehad het, maar dis ook nie wat jy wil hê nie).

Verdere Leeswerk

As jy hierdie plasing geniet het, sal jy dalk ook van hierdie voorstelle hou:


Deel op BlueskyDeel op FacebookDeel op LinkedInDeel op TumblrDeel op XDeel op LinkedInSpeld op Pinterest

Mikkel Christensen

Oor die skrywer

Mikkel Christensen
Mikkel is die skepper en eienaar van miklix.com. Hy het meer as 20 jaar ondervinding as 'n professionele rekenaarprogrammeerder/sagteware-ontwikkelaar en is tans voltyds in diens van 'n groot Europese IT-korporasie. Wanneer hy nie blog nie, spandeer hy sy vrye tyd aan 'n groot verskeidenheid belangstellings, stokperdjies en aktiwiteite, wat tot 'n mate weerspieël kan word in die verskeidenheid onderwerpe wat op hierdie webwerf gedek word.