[Gelöst] Max EK in Verkaufszeile anzeigen

27. Mai 2010 12:33

Hallo zusammen,

Ich habe ein Problem und hoffe ihr könnt mir helfen.

Ich würde in der Verkaufszeile gerne ein Feld haben, welches den höchsten EK dieses Artikels anzeigt.
Am liebsten hätte ich ein FlowField Typ Max auf Cost Amount (Actual) in Item Ledger Entries gemacht nur leider ist das ein Flowfield und FlowField auf Flowfield
klappt ja scheinbar nicht...

Was gibt es für alternativen? Ein FlowField auf die Wertposten geht ja auch nicht. da fehlt mir die Summengeschichte.

Kann man nicht mit zwei drei Zeilen in den Trigger in der Tabelle die Arbeit des ersten Flowfields packen und dann den höchsten Wert ausgeben?

Vielen Dank für eure Hilfe
Beste Grüße
Thomas
Zuletzt geändert von tommygunse am 27. Mai 2010 15:34, insgesamt 1-mal geändert.

Re: Max EK in Verkaufszeile anzeigen

27. Mai 2010 15:15

Hallo nochmal,

ich habe jetzt in einem Report folgenden simplen Code erstellt...

Code:
ILE.SETFILTER(ILE."Item No.","Sales Line"."No.");
ILE.SETFILTER(ILE.Open,'Ja');
MaxWert := 0;
IF ILE.Find ('-') THEN
repeat
ILE.CALCFIELDS(ILE."Cost Amount (Actual)");
If ILE."Cost Amount (Actual)" > MaxWert THEN
  MaxWert:=ILE."Cost Amount (Actual)";
until ILE.NEXT = 0;


Bekomme ich MaxWert in ein neues Feld der Sales Line???

danke schonmal

Re: Max EK in Verkaufszeile anzeigen

27. Mai 2010 15:34

Habe jetzt eine neue Funktion erstellt in der Tabelle mit dem gleichen Code wie im Report.

Dann habe ich in den OnValidate Trigger von "No." in der Sales Line angegeben, dass mein neues Feld := die Fgunktion sein soll...


meiner Meinugn nach klappt es gut.

Falls jemanden etwas auffällt, was grob fahrlässig oder falsch ist freu e ich mich aber dennoch über einen Kommentar

Re: Max EK in Verkaufszeile anzeigen

27. Mai 2010 15:34

Zunächst einmal eine leichter lesbare Version sowie eine Korrektur

Code:
MaxWert := 0;

IF (Type <> Type::Item) OR "No." = '') THEN
  EXIT; // !!!

ILE.SETRANGE("Item No.","No.");
ILE.SETRANGE(Open, TRUE); // !!!
IF ILE.Find ('-') THEN
  repeat
    ILE.CALCFIELDS(ILE."Cost Amount (Actual)");
    If ILE."Cost Amount (Actual)" > MaxWert THEN
      MaxWert:=ILE."Cost Amount (Actual)";
  until ILE.NEXT = 0;


Pack doch diesen Quelltext als Funktion in die Tabelle 37 Sales Line, oder falls die Lizenz dies nicht zulässt, in eine Funktion auf die Auftagssubform.
Deklariere MaxWert nicht als lokale oder globale Variable, sondern als Rückgabeparameter (für die Funktion lokale Variablen aufrufen, Registerkarte "Return Value", Name = MaxWert, Return Value = Decimal).
Füge auf der Auftragssubform eine neue Textboxhinzu und gebe als SourceExpr deinen neuen Funktionsnamen an.

Re: [Gelöst] Max EK in Verkaufszeile anzeigen

27. Mai 2010 16:07

Danke für Deine Antwort.
Ich hatte es in der Tabelle, werde es aber lieber in die Form packen...

Allerdings habe ich ein Problem. Ich kann keine Zeilen mehr löschen.
Was habe ich verbrochen?

Re: [Gelöst] Max EK in Verkaufszeile anzeigen

27. Mai 2010 16:14

tommygunse hat geschrieben:Ich hatte es in der Tabelle, werde es aber lieber in die Form packen...

Würde ich nicht - was ist, wenn du diese Funktion in einer anderen Form (z.b. Rechnungssubform) auch brauchst?

Allerdings habe ich ein Problem. Ich kann keine Zeilen mehr löschen.
Was habe ich verbrochen?

Schlimmes :mrgreen:
Keine Ahnung; nimm alles zurück, was du außer dieser Funktion gemacht hast ... Insbesondere Code aus den anderen Stellen (OnValidate hast du mal erwähnt) entfernen.
Ansonsten: Welche Fehlermeldung bekommst du, hast du den Debugger befragt ...?

Re: [Gelöst] Max EK in Verkaufszeile anzeigen

27. Mai 2010 16:32

Ich habe alles rückgängig gemacht. Die Funktion erstellt und nur in der Form aufgerufen ohne, dass der Wert in die Tabelle geschrieben wird. :-)
Das klappt... aber diese True geschichte bei Item Ledger Entry.open klappt nciht. Er sagt Auswahlmöglichkeiten wären Nein und Ja...

Das hilft mir aber nichts, da es ja auch im Englischen funktionieren muss.

Hilfe!

Re: [Gelöst] Max EK in Verkaufszeile anzeigen

27. Mai 2010 16:35

tommygunse hat geschrieben:... aber diese True geschichte bei Item Ledger Entry.open klappt nciht. Er sagt Auswahlmöglichkeiten wären Nein und Ja...

Mein Fehler, so ist es richtig:
Code:
ILE.SETRANGE(Open, TRUE);

Habs oben korrigiert.

Re: [Gelöst] Max EK in Verkaufszeile anzeigen

27. Mai 2010 16:37

Ja Wahnsinn! :-)

Klappt.

Tausend Dank

Beste Grüße
Thomas