Miklix

Der Unterschied zwischen data() und buf2Buf() in Dynamics AX 2012

Veröffentlicht: 15. Februar 2025 um 22:53:17 UTC

In diesem Artikel werden die Unterschiede zwischen den Methoden buf2Buf() und data() in Dynamics AX 2012 erläutert. Außerdem wird angegeben, wann welche Methode angemessen ist, und es wird ein X++-Codebeispiel gegeben.


Diese Seite wurde maschinell aus dem Englischen übersetzt, um sie so vielen Menschen wie möglich zugänglich zu machen. Leider ist die maschinelle Übersetzung noch keine ausgereifte Technologie, so dass Fehler auftreten können. Wenn Sie es vorziehen, können Sie sich die englische Originalversion hier ansehen:

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

Die Informationen in diesem Beitrag basieren auf Dynamics AX 2012 R3. Sie sind möglicherweise auch für andere Versionen gültig, müssen es aber nicht.

Wenn Sie in Dynamics AX die Werte aller Felder von einem Tabellenpuffer in einen anderen kopieren müssen, gehen Sie normalerweise wie folgt vor:

toTable.data(fromTable);

Das funktioniert gut und ist in den meisten Fällen die richtige Lösung.

Sie haben jedoch auch die Möglichkeit, stattdessen die Funktion buf2Buf zu verwenden:

buf2Buf(fromTable, toTable);

Das funktioniert auch gut. Was ist also der Unterschied?

Der Unterschied besteht darin, dass buf2Buf keine Systemfelder kopiert. Zu den Systemfeldern gehören Felder wie RecId, TableId und in diesem Zusammenhang vielleicht am wichtigsten: DataAreaId. Der Grund, warum letzteres am wichtigsten ist, ist, dass der typischste Fall, in dem Sie buf2Buf() anstelle von data() verwenden würden, das Duplizieren von Datensätzen zwischen Unternehmenskonten ist, normalerweise durch Verwendung des Schlüsselworts changeCompany.

Wenn Sie beispielsweise in der Firma „dat“ arbeiten und eine andere Firma namens „com“ haben, von der Sie alle Datensätze in CustTable kopieren möchten:

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

In diesem Fall funktioniert es, weil buf2Buf alle Feldwerte außer den Systemfeldern in den neuen Puffer kopiert. Hätten Sie stattdessen data() verwendet, wäre der neue Datensatz in die Firmenkonten „com“ eingefügt worden, weil dieser Wert ebenfalls in den neuen Puffer kopiert worden wäre.

(Tatsächlich hätte dies zu einem Fehler wegen doppeltem Schlüssel geführt, aber das ist auch nicht das, was Sie wollen.)

Teilen auf BlueskyAuf Facebook teilenAuf LinkedIn teilenAuf Tumblr teilenTeilen auf XAuf LinkedIn teilenPin auf Pinterest

Mikkel Bang Christensen

Über den Autor

Mikkel Bang Christensen
Mikkel ist der Schöpfer und Eigentümer von miklix.com. Er verfügt über mehr als 20 Jahre Erfahrung als professioneller Computerprogrammierer/Softwareentwickler und ist derzeit in Vollzeit für ein großes europäisches IT-Unternehmen tätig. Wenn er nicht gerade bloggt, verbringt er seine Freizeit mit einer Vielzahl von Interessen, Hobbys und Aktivitäten, was sich bis zu einem gewissen Grad in der Vielfalt der auf dieser Website behandelten Themen widerspiegelt.