Miklix

Ero data():n ja buf2Buf():n välillä Dynamics AX 2012:ssa

Julkaistu: 15. helmikuuta 2025 klo 22.53.42 UTC
Viimeksi päivitetty: 12. tammikuuta 2026 klo 8.41.00 UTC

Tässä artikkelissa selitetään buf2Buf()- ja data()-metodien erot Dynamics AX 2012:ssa, mukaan lukien milloin on tarkoituksenmukaista käyttää kumpaakin, sekä X++-koodiesimerkki.


Tämä sivu on käännetty koneellisesti englannista, jotta se olisi mahdollisimman monen ihmisen saatavilla. Valitettavasti konekääntäminen ei ole vielä täydellistä tekniikkaa, joten virheitä voi esiintyä. Voit halutessasi tarkastella alkuperäistä englanninkielistä versiota täällä:

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

Tämän viestin tiedot perustuvat Dynamics AX 2012 R3 -versioon. Ne eivät välttämättä päde muihin versioihin.

Kun sinun on kopioitava kaikkien kenttien arvot yhdestä taulukkopuskurista toiseen Dynamics AX:ssä, teet perinteisesti jotain tällaista:

toTable.data(fromTable);

Tämä toimii hyvin ja useimmissa tapauksissa on oikea tie.

Voit kuitenkin käyttää myös buf2Buf-funktiota:

buf2Buf(fromTable, toTable);

Tämäkin toimii hyvin. Mitä eroa niillä sitten on?

Ero on siinä, että buf2Buf ei kopioi järjestelmäkenttiä. Järjestelmäkenttiin kuuluvat esimerkiksi RecId, TableId ja ehkä tässä yhteydessä tärkein kentti, DataAreaId. Jälkimmäinen on tärkein siksi, että tyypillisin tapaus, jossa buf2Buf():ia käytetään data():in sijaan, on tietueiden kopiointi yritystilien välillä, tyypillisesti käyttämällä changeCompany-avainsanaa.

Jos esimerkiksi olet yrityksessä nimeltä "dat" ja sinulla on toinen yritys nimeltä "com", josta haluat kopioida kaikki CustTable-taulukon tietueet:

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

Tässä tapauksessa se toimii, koska buf2Buf kopioi kaikki kenttien arvot järjestelmäkenttiä lukuun ottamatta uuteen puskuriin. Jos olisit käyttänyt data():ia, uusi tietue olisi lisätty "com"-yrityksen tileille, koska kyseinen arvo olisi myös kopioitu uuteen puskuriin.

(Itse asiassa se olisi johtanut kaksoisavaimen virheeseen, mutta et sitäkään halua.)

Lisälukemista

Jos pidit tästä postauksesta, saatat pitää myös näistä ehdotuksista:


Jaa BlueskyssäJaa FacebookissaJaa LinkedInissäJaa TumblrissaJaa X:ssäJaa LinkedInissäPin Pinterestissä

Mikkel Christensen

Kirjoittajasta

Mikkel Christensen
Mikkel on miklix.com-sivuston luoja ja omistaja. Hänellä on yli 20 vuoden kokemus ammattimaisena tietokoneohjelmoijana/ohjelmistokehittäjänä, ja tällä hetkellä hän työskentelee kokopäiväisesti suuressa eurooppalaisessa IT-yrityksessä. Kun hän ei ole bloggaamassa, hän käyttää vapaa-aikaansa monenlaisiin kiinnostuksen kohteisiin, harrastuksiin ja aktiviteetteihin, mikä saattaa jossain määrin heijastua tällä verkkosivustolla käsiteltävien aiheiden moninaisuuteen.