Bug beim Fehler abfangen mit IF Codeunit.RUN ...

11. August 2010 11:46

Folgendes habe ich heute beobachten können:

Beim Aufruf einer Codeunit über das bekannte Konstrukt
Code:
IF Codeunit.RUN THEN ...


wird unter bestimmten Umständen ein auftretender Fehler an die Benutzeroberfläche gemeldet,
obwohl ja eigentlich alle Fehler abgefangen werden sollten.

Dieses Fehlverhalten tritt (bei mir) auf, wenn in der aufgerufenen CU über INSERT ein
Datensatz in eine Tabelle eingefügt werden soll, der dort bereits existiert.

Aber: Es passiert nur, wenn der Primary Key der entsprechenden Tabelle eine Zahl ist
z.B. die Postentabellen. Wenn der PK ein Feld vom Typ CODE ist (Item, Vendor etc.)
verhält sich das Konstrukt wie erwartet: es wird kein Fehler an den Benutzer gemeldet.
Bei MODIFY und DELETE funktioniert alles wie erwartet.

Alles getestet mit SQL -- in der nativen DB funktioniert alles wie erwartet.
(Test mit 4sp2, 5.00 und 2009 sp1 durchgeführt)

Ich weiß -- das hört sich schon ziemlich krank an ...

Kann jemand dieses Verhalten bestätigen?
Oder gar erklären?

Als einfachen Test habe ich folgenden Zweizeiler verwendet, wobei Record T mal die
17 (G/L Entry) oder die 18 (Customer) war.

Code:
T.FINDFIRST;
T.INSERT;

Gruß
Torsten

EDIT: Betreff geändert

Re: Bug beim Fehler abfangen mit IF Codeunit.RUN ...

11. August 2010 13:37

Kann ich bei einem Test auf der Item Ledger Entry nicht bestätigen (Nav5.01, SQL Server 2008).

Re: Bug beim Fehler abfangen mit IF Codeunit.RUN ...

11. August 2010 13:48

Danke McLane für deinen Test.

Wenn ich das bei mir nicht selbst sehen würde, ich würde es ja selbst nicht glauben.

gerade noch einmal -- mit der Item Ledger Entry -- getestet:
NAV 2009 sp1, Effekt wie beschrieben. Wir haben allerdings SQL Server 2005.

Sollte es daran liegen?

ich habe einmal meine beiden Codeunits als Anhang beigefügt -- viel ist ja eh nicht drin.

Gruß
Torsten
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Bug beim Fehler abfangen mit IF Codeunit.RUN ...

11. August 2010 14:47

Ich hab's nochmal so nachgebaut. Bleibt dabei :-?

Re: Bug beim Fehler abfangen mit IF Codeunit.RUN ...

11. August 2010 15:14

So, gerade verschiedene Versionen getestet --> verschiedene Ergebnisse:

Code:
           Build      Integer        Code
Server 2008:
4 sp2      22611        ok           ok
5.01SP1    29550        ok           ok         McLane
Server 2005:
4 sp3      23305        ok           ok
5 sp1      29125        -            ok
6          27808        -            -
6 sp1      29626        -            ok
6 sp1      30666        -            ok

Ein System kann ich hier leider nicht erkennen.
Vielleicht hilft es ja irgendwann einmal jemandem weiter ...

Gruß
Torsten

EDIT: Liste ergänzt: McLane; Build 30666
Zuletzt geändert von Torsten67 am 11. August 2010 16:34, insgesamt 2-mal geändert.

Re: Bug beim Fehler abfangen mit IF Codeunit.RUN ...

11. August 2010 15:48

Jo, bei mir war es 5.01SP1 Build 29550