Miklix

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

Veröffentlicht: 15. Februar 2025 um 22:53:17 UTC
Zuletzt aktualisiert: 12. Januar 2026 um 08:40:58 UTC

Dieser Artikel erläutert die Unterschiede zwischen den Methoden buf2Buf() und data() in Dynamics AX 2012, einschließlich der Frage, wann die jeweilige Methode angebracht ist, und eines X++-Codebeispiels.


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. Ob sie auch für andere Versionen gelten, ist ungewiss.

Wenn Sie in Dynamics AX die Werte aller Felder von einem Tabellenpuffer in einen anderen kopieren müssen, würden Sie üblicherweise folgendermaßen vorgehen:

toTable.data(fromTable);

Das funktioniert gut und ist in den meisten Fällen die beste Vorgehensweise.

Alternativ können Sie jedoch auch die Funktion buf2Buf verwenden:

buf2Buf(fromTable, toTable);

Das funktioniert auch gut. Worin besteht 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. Letzteres ist deshalb so wichtig, weil man buf2Buf() typischerweise anstelle von data() verwendet, wenn Datensätze zwischen Firmenkonten dupliziert werden, üblicherweise mithilfe des Schlüsselworts changeCompany.

Wenn Sie beispielsweise im Unternehmen „dat“ tätig sind und ein weiteres Unternehmen namens „com“ haben, aus dem Sie alle Datensätze in der Tabelle „CustTable“ kopieren möchten:

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

In diesem Fall funktioniert es, da 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 von „com“ eingefügt worden, da dieser Wert ebenfalls in den neuen Puffer kopiert worden wäre.

(Eigentlich hätte das zu einem Fehler wegen eines doppelten Schlüssels geführt, aber das wollen Sie ja auch nicht).

Weitere Informationen

Wenn Ihnen dieser Beitrag gefallen hat, könnten Ihnen auch diese Vorschläge gefallen:


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

Mikkel Christensen

Über den Autor

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