Miklix

Forskjellen mellom data() og buf2Buf() i Dynamics AX 2012

Publisert: 15. februar 2025 kl. 22:53:54 UTC

Denne artikkelen forklarer forskjellene mellom buf2Buf()- og data()-metodene i Dynamics AX 2012, inkludert når det er hensiktsmessig å bruke hver og et X++-kodeeksempel.


Denne siden er maskinoversatt fra engelsk for å gjøre den tilgjengelig for så mange som mulig. Dessverre er maskinoversettelse ennå ikke en fullkommen teknologi, så det kan forekomme feil. Hvis du foretrekker det, kan du se den engelske originalversjonen her:

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

Informasjonen i dette innlegget er basert på Dynamics AX 2012 R3. Det kan være eller ikke være gyldig for andre versjoner.

Når du trenger å kopiere verdien av alle feltene fra en tabellbuffer til en annen i Dynamics AX, ville du tradisjonelt gjort noe som:

toTable.data(fromTable);

Dette fungerer bra og er i de fleste tilfeller veien å gå.

Du har imidlertid også muligheten til å bruke buf2Buf-funksjonen i stedet:

buf2Buf(fromTable, toTable);

Dette fungerer også bra. Så hva er forskjellen?

Forskjellen er at buf2Buf ikke kopierer systemfelt. Systemfelt inkluderer felt som RecId, TableId, og kanskje viktigst i denne sammenhengen, DataAreaId. Grunnen til at sistnevnte er den viktigste er at det mest typiske tilfellet hvor du vil bruke buf2Buf() i stedet for data() er når du dupliserer poster mellom firmakontoer, typisk ved bruk av nøkkelordet changeCompany.

For eksempel, hvis du er i "dat"-selskapet og har et annet selskap kalt "com" som du ønsker å kopiere alle poster i CustTable fra:

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

I dette tilfellet vil det fungere fordi buf2Buf kopierer alle feltverdier, unntatt systemfelt til den nye bufferen. Hadde du brukt data() i stedet, ville den nye posten blitt satt inn i "com"-selskapskontoene fordi den verdien også ville blitt kopiert til den nye bufferen.

(Egentlig ville det ha resultert i en duplikatnøkkelfeil, men det er heller ikke det du ønsker).

Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFest på Pinterest

Mikkel Bang Christensen

Om forfatteren

Mikkel Bang Christensen
Mikkel er skaperen og eieren av miklix.com. Han har over 20 års erfaring som profesjonell dataprogrammerer/programvareutvikler og er for tiden ansatt på fulltid i et stort europeisk IT-selskap. Når han ikke blogger, bruker han fritiden sin på en lang rekke interesser, hobbyer og aktiviteter, noe som til en viss grad kan gjenspeiles i de mange ulike temaene som dekkes på dette nettstedet.