Bodo's Dynamics NAV Blog
Bodo ist ein Dynamics NAV Urgestein. Er programmiert NAV seit DOS Zeiten und hat auch keine Scheu vor .NET. Viele Neueinsteiger wurden von ihm in den letzten Jahren zu NAV Entwicklern ausgebildet. In diesem Blog veröffentlicht Bodo monatlich technische Kabinettstückchen aus der Welt von Dynamics NAV und .NET.NAV 2009 – Funktion FORMAT, Datentyp OPTION und unterschiedliches Verhalten von Classic Client und Role Tailored Client
Der folgende Quellcode erscheint auf den ersten Blick unverdächtig, führt allerdings bei der Ausführung über den NAV Server, d.h. über den Role Tailored Client oder über einen Web Service, zu einer Fehlermeldung:

Kurze Erläuterung des Quellcodes: Wir nehmen eine Variable SalesHeader vom Typ Record der Tabelle 36, setzen den Status auf „Freigegeben“, lesen anschließend diesen Status über die Datentypen RecordRef und FieldRef wieder aus, weisen den Wert der Variable OptionNo vom Typ Integer zu und zeigen das Ergebnis an.
Leider fliegt Ihnen eine Fehlermeldung um die Ohren, wenn Sie diesen Code über den Role Tailored Client (oder über einen Web Service) ausführen:

Wo liegt das Problem? Der Ausdruck „FORMAT(FldRef.VALUE)“ liefert den Wert „Freigegeben“ also den OptionCaption zurück. Darüber kann man sich wundern. Dynamics NAV Versionen vor 2009 und der Classic Client von NAV 2009 liefern für den gleichen Ausdruck den Index der Option zurück. Das können Sie einfach testen, in dem Sie den Quellcode oben über den Classic Client ausführen:

Dieses Problem ist bei Microsoft bekannt und unter der Bug-ID 208030 registriert. Es soll mit einem Hotfix für Dynamics NAV 2009 SP1 bzw. R2 behoben werden. Sobald dieser Hotfix verfügbar ist, werde ich einen entsprechenden Link an dieser Stelle veröffentlichen.
Als Workaround bis zur Veröffentlichung des Hotfix müssen Sie die Zeile „EVALUATE(OptionNo, FORMAT(FldRef.VALUE));“ durch „OptionNo := FldRef.VALUE;“ ersetzen. Die implizite Typumwandlung führt in beiden Welten zum gleichen Ergebnis.
Mein besonderer Dank gilt Tobias. Wenn er mir nicht den Tipp gegeben hätte, das Änderungsprotokoll auszuschalten, würde ich wahrscheinlich heute noch nach dem Fehler suchen. In Codeunit 423 Change Log Management ist mit Dynamics NAV 2009 genau der oben beschriebene Workaround von Microsoft eingebaut worden. Nur leider war unser Quellcode noch auf Basis von Version 4…

Neueste Einträge
- Dynamics NAV 2013 – Bilderrätsel
- Dynamics NAV 2013 – XmlPorts und Option-Felder
- NAV 2013 – Der Fall mit den Notizen
- Dynamics NAV 2013 – Austauschverfahren in der Automobilbranche – Altteilsteuer
- Dynamics NAV 2013 – Die Länge der Datentypen Code und Text
- Dynamics NAV 2013 – Quellcode mit Kommentaren von Microsoft
- NAV 2009 – Unerwartetes Verhalten von Codeunit.RUN
- NAV 2009 – Benutzer-Metadaten kopieren
- Dynamics NAV 2013: 3-Schichten-Installation
- Zusammenfassende Meldung - merkwürdiges Verhalten
Nach Datum
- Juni 2013
- Mai 2013
- April 2013
- März 2013
- Februar 2013
- Januar 2013
- Dezember 2012
- November 2012
- Oktober 2012
- September 2012
- August 2012
- Juli 2012
- Juni 2012
- Mai 2012
- April 2012
- März 2012
- Februar 2012
- Januar 2012
- Dezember 2011
- November 2011
- Oktober 2011
- September 2011
- August 2011
- Juli 2011
- Juni 2011
- Mai 2011
- April 2011
- März 2011
- Februar 2011
- Januar 2011
Tag Cloud
3 schichten 2009 2013 active directory add-in addin altteilesteuer ascii automobilbranche benutzer bericht buchungsdatum bug caption classic code codeunit copy datentypen diagramme drucken enhanced export extension form format fun gdpdu icons infopath inforegister installation kommentare ldap link login merge metadaten nav notizen option page paste pdf profil r2 readpermission record record link reihenfolge report rtc run runmodal security securtiy service princial name session sharepoint sicherheit sicherheitsmodelle spn sqlserver ssl standard text toolbar transformation transformation tool trigger tutorial update webservices xmlports zm übersicht

