[Gelöst] Validate - Probleme

8. Februar 2007 10:08

Hallo!

Ich habe in der Einkaufszeile ein neues Feld "Ursprungsmenge" eingefügt. Dort soll bei Eingabe der Menge automatisch das Feld "Menge" ausgefüllt werden.
Folgendes hab ich in den OnValidate-Trigger des Feldes "Ursprungsmenge" eingetragen:
VALIDATE(Quantity,"Source Quantity");

Das funktioniert auch, nur leider wird der Zeilenbetrag nicht ausgerechnet. Man muss dann auf das Feld Menge gehen, F2 drücken und das Feld verlassen. Wie kann ich das machen, das Navision automatisch beim verlassen des Feldes "Ursprungsmenge" sozusagen das Feld "Menge" verlässt und damit auch den Zeilenbetrag berechnet?
Für Antworten wäre ich dankbar.
Zuletzt geändert von svr am 21. März 2007 16:04, insgesamt 1-mal geändert.

8. Februar 2007 10:31

Hinterlege im Form-Feld(! nicht Tabelle) "Ursprungsmenge" im OnAfterValidateTrigger ein
Code:
CurrForm.UPDATE
.
Ich denke, es ist nur ein Anzeige-Fehler.

8. Februar 2007 10:51

Danke für die schnelle Antwort!
Das bringt leider auch noch nicht den Erfolg, selbst wenn ich zum testen den kompletten OnValidate-Trigger Code des Feldes "Menge" in das Feld Ursprungsmenge kopiere berechnet er den Zeilenbetrag nicht. Eigentlich dachte ich das VALIDATE dasselbe wäre als würde man F2 drücken, oder nicht?

8. Februar 2007 11:03

Nochmal:
Dein Validate-Befehl steht ganz normal im Tabellen- (und nicht Form-)Feld, oder? Und du gibst zuerst etwas im Feld Ursprungsmenge ein, und dies soll in das Feld Menge kopiert bzw. validiert werden?

Teste das mal auf Tabellenebene (ist zwar unübersichtlich, aber dafür kannst du sicher sein, die Daten richtig zu sehen).
Sollte es auch dort nicht klappen (kann ich mir nicht vorstellen!), pack mal hinter dein Validate ein MODIFY.

8. Februar 2007 12:08

Genau, das Validate steht in der Tabelle.
Funktioniert weder auf Tabellenebene noch mit dem Modify.

8. Februar 2007 12:40

Zeig mal bitte deinen Validate-Code in beiden Mengenfeldern....

8. Februar 2007 13:37

Feld "Source Quantity" (Ursprungsmenge):
//
VALIDATE(Quantity,"Source Quantity");
//
Feld "Quantity": nichts geändert, also wie im Standard 4.03 Addon DB

8. Februar 2007 14:44

Steht in deiner Form im Feld "Source Quantity" irgendwas an Triggern drin??
Und ich muss so misstrauisch nachfragen, um wirklich alles auszuschließen:
Bist du dir ganz sicher, dass du deinen Validate-Befehl auf Tabellenebene, nicht auf Form-Ebene eingepflegt hast?

8. Februar 2007 15:01

In den Triggern steht nix drin und ganz sicher, ich bewege mich auf Tabellenebene. Das interessante ist, dass sich beispielsweise die Restbestellungsmenge, Menge aktuelle Lieferung usw. ändern (das muss ja aus dem Feld "Menge" kommen), nur nicht der Zeilenbetrag, der ja aus Menge und Preis berechnet wird. Der Wert im Feld "Menge" ändert sich ja mit, aber irgendwie rechnet Navision nicht nochmal den Zeilenbetrag aus, wie gesagt Navision rechnet nur wenn man das Mengenfeld mit F2 verlässt.

8. Februar 2007 15:21

Von welcher Tabelle reden wir hier denn? Ist es eine Standardtabelle wo du einfach ein neues Feld hinzugefügt hast?

Ich frage deshalb, um mir mal den OnValidate-Trigger des Feldes "Quantity" anzuschauen. Vielleicht steht dort irgendetwas wie
Code:
IF FIELDNO = ??
...

Gruß, Marc

8. Februar 2007 15:31

Hi Marc,

genau darauf war ich auch gerade gekommen.
Daran MUSS es einfach liegen. Hatte den Fall eben bei mir lokal nachgestellt.
ich such mal nach der Stelle...

21. März 2007 14:02

Ich wollte nochmal nachfragen ob jemand vielleicht eine Lösung für dieses Problem hat. Im OnValidate Trigger des Feldes "Quantity" steht irgendwas mit FieldNo, ich kann aber nicht so recht was damit anfangen. :-(

21. März 2007 14:13

Meistens wird FieldNo im Zusammenhang mit CurrFieldNo verwendet, so in der Art:

Code:
IF CurrFieldNo = FIELDNO(Quantity) THEN BEGIN


Das hat dann zur Folge, dass der nachfolgende Code nur ausgeführt wird, wenn du direkt auf dem Feld Menge eine Eingabe machst. Beim Auslösen des VALIDATE-Triggers von einer anderen Stelle aus wird dieser dann eben nicht ausgeführt.

Vielleicht liegt das Problem ja irgendwo in diesem Bereich?

21. März 2007 14:29

Ins Blaue getippt: Schau mal mit dem Debugger in die Funktion UpdateDirectUnitCost(), erste 2 Zeilen:

Code:
IF ((CalledByFieldNo <> CurrFieldNo) AND (CurrFieldNo <> 0)) OR
   ("Prod. Order No." <> '')
THEN
  EXIT;


Ich vermute fast, dass er hier aussteigt.

EDIT: Ups, da war der rotsch schneller :-)

21. März 2007 16:03

Ich habs durch probieren dann doch noch hinbekommen, indem ich einfach im Feld "Ursprungsmenge" (OnValidate) die Funktion:
Code:
UpdateDirectUnitCost(FIELDNO("Ursprungsmenge"));

aufrufe! Es ist im Prinzip genauso wie rotsch es formuliert hat.
Besten Dank!