Miklix

Skillnaden mellan data() och buf2Buf() i Dynamics AX 2012

Publicerad: 15 februari 2025 kl. 22:54:03 UTC
Senast uppdaterad: 12 januari 2026 kl. 08:41:11 UTC

Den här artikeln förklarar skillnaderna mellan metoderna buf2Buf() och data() i Dynamics AX 2012, inklusive när det är lämpligt att använda var och en samt ett X++-kodexempel.


Denna sida har maskinöversatts från engelska för att göra den tillgänglig för så många som möjligt. Tyvärr är maskinöversättning ännu inte en fulländad teknik, så fel kan uppstå. Om du föredrar det kan du se den engelska originalversionen här:

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

Informationen i det här inlägget är baserad på Dynamics AX 2012 R3. Den kan vara giltig för andra versioner, men inte nödvändigtvis.

När du behöver kopiera värdet för alla fält från en tabellbuffert till en annan i Dynamics AX gör du traditionellt något i stil med:

toTable.data(fromTable);

Detta fungerar bra och är i de flesta fall rätt väg att gå.

Du har dock också möjlighet att använda buf2Buf-funktionen istället:

buf2Buf(fromTable, toTable);

Detta fungerar också bra. Så vad är skillnaden?

Skillnaden är att buf2Buf inte kopierar systemfält. Systemfält inkluderar fält som RecId, TableId och kanske viktigast i detta sammanhang, DataAreaId. Anledningen till att det senare är det viktigaste är att det vanligaste fallet där du använder buf2Buf() istället för data() är när du duplicerar poster mellan företagskonton, vanligtvis med hjälp av nyckelordet changeCompany.

Om du till exempel är i företaget "dat" och har ett annat företag som heter "com" som du vill kopiera alla poster i CustTable från:

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

I det här fallet fungerar det eftersom buf2Buf kopierar alla fältvärden, förutom systemfält, till den nya bufferten. Om du hade använt data() istället skulle den nya posten ha infogats i företagskontona "com" eftersom det värdet också skulle ha kopierats till den nya bufferten.

(Egentligen skulle det ha resulterat i ett fel med en duplicerad nyckel, men det är inte heller vad du vill).

Vidare läsning

Om du gillade det här inlägget kanske du också gillar dessa förslag:


Dela på BlueskyDela på FacebookDela på LinkedInDela på TumblrDela på XDela på LinkedInFäst på Pinterest

Mikkel Christensen

Om författaren

Mikkel Christensen
Mikkel är skaparen och ägaren av miklix.com. Han har över 20 års erfarenhet som professionell datorprogrammerare/mjukvaruutvecklare och är för närvarande heltidsanställd på ett stort europeiskt IT-bolag. När han inte bloggar ägnar han sin fritid åt en mängd olika intressen, hobbies och aktiviteter, vilket i viss mån kan återspeglas i de olika ämnen som behandlas på den här webbplatsen.