[gelöst] Wert eines FlowFields ermitteln

20. März 2007 14:08

In unserer angepassten Navision Version ist ein Integer FlowField in den Sales Lines eingebaut. Das FlowField wird mittels COUNT berechnet. zB 15 Posten erfasst.

Ich möchte nun beim Buchen des Auftrags dieses FlowField auslesen, und bei 0 oder einem anderen Wert einen Fehler auszugeben. Ich schaffe es zwar die Infos anderer Werte auf den einzelnen Zeile beim buchen auszugeben, jedoch schaffe ich keine Berechnung des FlowFields.

CALCFIELDS - Liefert mir immer nur TRUE oder FALSE zurück - Aber keinen Wert - Egal ob ein Wert erfasst wurde oder nicht
CALCSUMS - Geht leider nur bei Decimal Feldern und mit
COUNT komme ich anscheinend nicht zusammen. Weil ich immer was falsch eingebe.

Anbei der CODE
Code:
Menuitem Buchen OnPush
//Local SalesLineL Rec Sales Line
   SalesLineL.SETRANGE("Document Type","Document Type");
   SalesLineL.SETRANGE("Document No.","No.");
   SalesLineL.SETRANGE(SalesLineL."Empties Item",FALSE);

   IF SalesLineL.FIND('-') THEN
    REPEAT

     IF (FLOWFIELD = 0) THEN
          ERROR (Text0001, SalesLineL.Description);

    UNTIL SalesLineL.NEXT = 0;


Bin schon ziemlich verzweifelt. Bitte um Hilfe.

Danke an alle im Voraus.
Zuletzt geändert von martinhaindl am 20. März 2007 19:21, insgesamt 1-mal geändert.

20. März 2007 14:40

Hallo Martin,

du musst den Wert des FlowFields ersteinmal berechnen lassen. Das geht so:

Code:
CALCFIELDS(FieldName);

Wobei hier FieldName der Name des FlowFields ist.

Gruß, Marc

20. März 2007 14:59

In unserer angepassten Navision Version ist ein Integer FlowField in den Sales Lines eingebaut. Das FlowField wird mittels COUNT berechnet. zB 15 Posten erfasst.


Ist das wirklich ein FlowField? Ich glaube eher, es ist ein Textfeld im Form mit SourceExpression count.
Das Feld, wenn es ein FlowField wäre, könnte ja sonst nicht in den SalesLines sein, weil es sich ja auf die SalesLine bezieht.

Dein Code:
Code:
SalesLineL.SETRANGE("Document Type","Document Type");
SalesLineL.SETRANGE("Document No.","No.");
SalesLineL.SETRANGE(SalesLineL."Empties Item",FALSE);

Ist ja gar nicht so verkehrt.
Du kannst jetzt nur noch die Menge der Datensätze mit SalesLine.count abfragen.

Gruss

20. März 2007 17:01

Danke für eure Tips.

Die Lösung von Mark hat funktioniert. Ich habe nur das die Nachricht falsch angezeigt. War so ein richter Newbie Fehler.
Nachdem ich im Navision nicht so bewandert bin, teste ich halt ziemlich viel mit Message.

Im Falle von CALCFIELDS habe ich ganz einfach die Nachricht falsch anzeigen lassen. Mein erster Versuch war.
MESSAGE(FORMAT(SalesLineL.CALCFIELDS("Weigh. Entry Entered"))); und Navision hat brav TRUE zurückgemeldet. Und ich habe mich immer geärgert warum ich keinen Wert habe.

Mit
Code:
SalesLineL.CALCFIELDS("Weigh. Entry Recalled");
MESSAGE(FORMAT(SalesLineL."Weigh. Entry Recalled"));

habe ich den Wert endlich erhalten, angezeigt bekommen.

Ganz einfach ein typischer Einsteiger Fehler.

Danke für die Tips.