Bodo's Dynamics NAV Blog

Bodo ist ein Dynamics NAV Urgestein. Er programmiert NAV seit DOS Zeiten und hat auch keine Scheu vor .NET und schon gar nicht vor Dynamics 365 oder Azure. Viele Neueinsteiger wurden von ihm in den letzten Jahren zu NAV Entwicklern ausgebildet.

In diesem Blog veröffentlichen Bodo und andere Superhelden Interessantes aus der Welt von Dynamics NAV, Dynamics 365 und Azure.

Dynamics NAV 2018 – Temporär oder nicht temporär, das ist hier die Frage (*)

Verfasst von Bodo am Montag, 27. August 2018

Tags: trigger, bug, 2018

Nach dem ich letzte Woche an der Funktionsweise der Page-Eigenschaft »SourceTableTemporary« gezweifelt habe, ist der Glaube zurückgekehrt.

Die Page-Eigenschaft »SourceTableTemporary« funktioniert einwandfrei. Sie sorgt dafür, dass Änderungen am Record-Inhalt nicht in die Datenbanktabelle geschrieben werden, sondern nur in das temporäre Abbild der Tabelle.

Allerdings darf man eines nicht vergessen. Die Page führt alle Ereignistrigger wie z.B. »OnInsert«, »OnModify« oder »OnDelete« aus. Die dort vorhandene Programmierung arbeitet eventuell mit der gleichen Datenbanktabelle, die dann unter Umständen nicht temporär ist.

Nehmen wir das konkrete Beispiel von letzter Woche. Bei der Tabelle »Customer« findet man unter »OnModify« den unten abgebildeten Quellcode. Es wird die Funktion »OnModify« der Codeunit 5056 »CustCont-Update« aufgerufen und der (temporäre) »Customer« übergeben:

blog-2018-08-27-image1.png

»OnModify« wiederum ermittelt den zugehörigen »Contact«, kopiert die Daten von »Customer« um, und ruft dann »OnModify« der Tabelle »Contact« auf:

blog-2018-08-27-image2.png

Und »OnModify« der Tabelle »Contact« delegiert die Verarbeitung an Codeunit 5055 »CustBankVend-Update« weiter. 

blog-2018-08-27-image3.png

Und nun sind wir geplatzt. Die Funktion »UpdateCustomer« macht ein »GET«, um »Customer« zu lesen. Ab jetzt sind wir nicht mehr temporär, sondern persistent auf Tabelle »Customer«. D.h., das anschließende umkopieren der Daten von »Contact« und der »MODIFY« sorgen dafür, dass temporär gemeinte Änderungen bis auf die Datenbank durchschlagen.

blog-2018-08-27-image4.png

(*) Frei nach Hamlet von William Shakespeare, https://de.wikipedia.org/wiki/Sein_oder_Nichtsein,_das_ist_hier_die_Frage

 

 


Mitglied der Dynamics NAV
Community

Microsoft Dynamics NAV community Workplace as a Service - Surface, Office 365 und Cloud-ERP zur Miete
Workplace as a Service:
Surface, Office 365 und Cloud-ERP


Kontakt

Comporsys Hansa GmbH
Schulauer Moorweg 25
22880 Wedel, Deutschland

Tel. +49 (0)4103 12117 - 0
Fax +49 (0)4103 12117 - 29
E-Mail: info@comporsys.de