Seite 1 von 1

Berechnung auf Report in welchem Trigger?

Verfasst: 12. Dezember 2012 16:16
von bensch@
Hi Leute ich arbeite mich immer mehr in Navision ein und stehe aktuell wieder mal vor einer Wand.

Ich möchte im Objet "11536 SR Cust. Order Lines" den Profit in % ausgeben und habe aktuell folgenden Code für die Berechnung:

Code:
Profit1 := (1 - Sales Line."Unit Cost (LCY)" / Sales Line."Unit Price") * 100;


Die Variable Profit1 habe ich unter den C/AL Globals definiert.

Meinen Code habe ich unter Sales Line C/AL Code unter Sales Line - OnAfterGetRecord() und Sales Line - OnPostDataItem getestet leider immer mit dem Fehler Nulldivision 0/0!

was mache ich falsch? Ich bin für sämtliche Hilfe sehr dankbar!

Re: Berechnung auf Report in welchem Trigger?

Verfasst: 12. Dezember 2012 16:47
von JanGD
Unit Price auf der Sales Line muss nicht immer gepflegt sein (ist zwar nicht korrekt, aber kann vorkommen).
Richtiger Trigger wäre OnAfterGetRecord.

Am Besten von solchen Reports eine Kopie im 50000er Bereich machen und da dran die Änderungen vornehmen.
Insbesondere, wenn man sich da einarbeitet. (Test-System ist Pflicht natürlich)

Re: Berechnung auf Report in welchem Trigger?

Verfasst: 13. Dezember 2012 14:51
von bensch@
Vielen Dank für die erste Antwort, leider behebt dies mein Problem noch nicht komplett!

tatsächlich ist es so, dass der Unit Price oder auch Unit Cost (LCY) nicht überall eingetragen ist und ich dadurch den Fehler erhalte!

Nun habe ich probiert mittels einer Abfrage zu üerprüfen ob die Felder kleiner oder grösser als 0 sind und erst danach die Berechung durchgeführt

Code:
IF ("Unit Cost (LCY)" <> 0) AND ("Unit Price" <> 0) THEN BEGIN
Profit1 := (1-"Unit Cost (LCY)" / "Unit Price") * 100;
END ELSE BEGIN
END;



Leider erhalte ich immer noch den Nulldivision 0/0 Fehler! Wenn ich den Report auf einen Kunden Filtere erhalte ich die korrekte Ausgabe.

Gibt es eine andere Möglichkeit um abzufragen ob die Felder leer sind oder einen Wert enthalten?


Vielen Dank für eure Hilfe

Re: Berechnung auf Report in welchem Trigger?

Verfasst: 13. Dezember 2012 16:13
von Markus Merkl
Ich würde auch ein ...Begin Clear(Profit1) end; machen;

Bist Du denn auch im on aftergetrecord Trigger?

Re: Berechnung auf Report in welchem Trigger?

Verfasst: 14. Dezember 2012 09:46
von Danjo
Hi,

deinem Code nach dürfte der Null-Divisionfehler nicht auftauschen.
Der Hinweiß mit dem Clear ist auf jedenfall nicht verkehrt, sollte aber eventuell durch ein Profit1 := 0; im ELSE-Zweig ersetzt werden. Ist zwar bei Decimal nicht zwingend, aber einmal angewöhnt macht man später keine Fehler mit.

Hast du eventuell noch den altne Code an einer anderen Stelle von früheren Tests stehen?
Du kannst ja mal mit dem Debugger schauen an welcher Stelle er rausfliegt.

Re: Berechnung auf Report in welchem Trigger?

Verfasst: 14. Dezember 2012 09:51
von JanGD
Du benötigst keine Begin/End bei Deinem dargestellten Code.