[gelöst] neue SalesLine automatisch anlegen

6. Oktober 2008 14:45

Hallo zusammen,

ich habe in die SalesLine Tabelle ein neues Feld "Auswahlcode" eingefügt. Nach Ausfüllen der Felder "Art" (Artikel) und "No." (123) wähle ich aus dem neuen Feld "Auswahlcode" (Lookup auf eine Tabelle) einen Wert aus. (Je nach Auswahl soll die folgende SalesLine automatisch einen bestimmten Artikel enthalten).
Nach Verlassen dieses neuen Feldes soll automatisch eine neue Verkaufszeile (direkt unter der aktuellen) eingefügt werden.

Dazu habe ich in der SalesLine Tabelle beim "OnValidate"-Trigger des neuen Feldes "Auswahlcode" eine neue SalesLine erstellt (die "Line No." dabei um 1 erhöht sowie weiterer Daten angegeben) und mit INSERT eingefügt. Allerdings ist die gerade aktuelle "Line No." der SalesLine (mit der "No." 123) immer "0".

Ich habe mir zwar mit
Code:
IF FIND('+') THEN BEGIN
  "Line No." := "Line No." + 10000;
END
ELSE BEGIN
  "Line No." := 10000;
END;

geholfen, immer eine LineNo. zu haben, aber ich brauche die LineNo. der aktuellen Zeile (die ja immer 0 (Null) ist).

Das Einfügen klappt zwar, aber die erste Zeile mit der No. 123 hat die LineNo. 5000 und meine neu eingefügte Zeile die LineNo. 10001.

Deshalb meine Frage.
An welcher Stelle wird die erste Zeile mit No. 123 in die Datenbank geschrieben? In der "Sales Order Subform" ist "DelayedInsert" standardmäßig auf Yes.
Es sieht ja so aus, dass meine neue Zeile (LineNo. 10001) korrekt eingefügt wird, aber anschließend wohl erst die erste Zeile mit der No. 123, die aber die LineNo. 10000 haben soll.

Muss ich evtl. einen Trigger in der "Sales Order Subform" verwenden?

Ich hoffe, mein Problem kann jemand verstehen.

Danke,
naviii
Zuletzt geändert von Naviii am 6. Oktober 2008 15:14, insgesamt 1-mal geändert.

Re: neue SalesLine automatisch anlegen

6. Oktober 2008 14:54

Du musst sicherstellen, dass deine SalesLine zu dem Zeitpunkt bereits gespeichert ist.
Am einfachsten erreichst du dass, wenn du auf der Sales Line SubForm in den Triggern OnAfterInput und OnLookup deines Feldes "Auswahlcode" einen CurrForm.SAVERECORD; absetzt.
Nach dem SAVERECORD hat deine SalesLine auch eine "Line No.".

Re: neue SalesLine automatisch anlegen

6. Oktober 2008 15:00

Superschnelle Antwort, danke.
Probiere ich sofort aus...

[gelöst] Re: neue SalesLine automatisch anlegen

6. Oktober 2008 15:14

Hallo Timo,

war genau der richtige Trigger ("Auswahlcode"->OnAfterInput), danke nochmal vielmals.

Gruß,
naviii