Miklix

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

Gepubliseer: 15 Februarie 2025 om 22:54:36 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 pos is gebaseer op Dynamics AX 2012 R3. Dit mag al dan nie geldig wees vir ander weergawes nie.

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

toTable.data(fromTable);

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

Jy het egter ook die opsie om eerder 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 bevat velde soos RecId, TableId, en miskien die belangrikste in hierdie konteks, DataAreaId. Die rede waarom laasgenoemde die belangrikste is, is dat die mees tipiese geval waar jy buf2Buf() in plaas van data () sal gebruik, is wanneer jy rekords tussen maatskappyrekeninge dupliseer, tipies deur gebruik te maak van die changeCompany-sleutelwoord.

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

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 u eerder data () gebruik het, sou die nuwe rekord in die "com" -maatskappyrekeninge ingevoeg gewees het, want die waarde sou ook na die nuwe buffer gekopieer gewees het.

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

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

Mikkel Bang Christensen

Oor die skrywer

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