Miklix

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

Julkaistu: 15. helmikuuta 2025 klo 22.53.42 UTC

Tässä artikkelissa selitetään Dynamics AX 2012:n buf2Buf()- ja data()-menetelmien väliset erot, mukaan lukien se, milloin on tarkoituksenmukaista käyttää kutakin ja 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:een. Se voi olla tai ei ole voimassa muille versioille.

Kun sinun on kopioitava kaikkien kenttien arvot taulukon puskurista toiseen Dynamics AX:ssä, toimisit perinteisesti seuraavasti:

toTable.data(fromTable);

Tämä toimii hyvin ja useimmissa tapauksissa on oikea tapa edetä.

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

buf2Buf(fromTable, toTable);

Tämäkin toimii hyvin. Joten mitä eroa on?

Erona on, että buf2Buf ei kopioi järjestelmäkenttiä. Järjestelmäkenttiä ovat kentät, kuten RecId, TableId ja ehkä tärkein tässä yhteydessä DataAreaId. Syynä jälkimmäinen on tärkein, koska tyypillisin tapaus, jossa käyttäisit buf2Buf():ta data():n sijaan, on tietueiden monistaminen yritystilien välillä, tyypillisesti käyttämällä changeCompany-avainsanaa.

Jos esimerkiksi kuulut yritykseen "dat" ja sinulla on toinen yritys nimeltä "com", josta haluat kopioida kaikki CustTablen tietueet:

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

Tässä tapauksessa se toimii, koska buf2Buf kopioi kaikki kenttäarvot paitsi järjestelmäkentät uuteen puskuriin. Jos olisit käyttänyt data():ta sen sijaan, uusi tietue olisi lisätty "com"-yritystileihin, koska tämä arvo olisi myös kopioitu uuteen puskuriin.

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

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

Mikkel Bang Christensen

Kirjoittajasta

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