1. März 2010 09:53
"Customer Price List".INIT;
"Customer Price List"."Customer No." := Customer."No.";
"Price List Code" := '005';
"Sales Order Type" := 'Verkauf Inland';
IF NOT "Customer Price List".INSERT THEN BEGIN;
END;
"Customer Price List"."Customer No." := Customer."No.";
"Price List Code" := '010';
"Sales Order Type" := 'Verkauf Ausland';
IF NOT "Customer Price List".INSERT THEN BEGIN;
END;
1. März 2010 10:09
Dadurch dass du die DataItem-Instanz der Preisliste (Customer Price List) verwendest und dort Werte einträgst, verwirrst du NAV und gibst dem Record unfreiwillig einen neuen Datensatzzeiger. Der Datensatzzeiger ergibt sich hier aufgrund der Daten, die in den Schlüsselfeldern enthalten sind und wird nicht explizit "im Hintergrund" verwaltet. Verwende eine zweite Instanz des Record, hol dir den zugehörigen Datensatz und korrigier diesen. Beispielsweise so:Frage 1 : Hat jemand eine Idee, wie dieses Problem zu lösen ist ?
IF NOT CustPriceList.GET(Customer."No.", "Price List Code", 'Verkauf Inland') THEN BEGIN
CustPriceList.INIT;
CustPriceList."Customer No." := Customer."No.";
CustPriceList."Price List Code" := '005';
CustPriceList."Sales Order Type" := 'Verkauf Inland';
CustPriceList.INSERT;
END;
Das ergibt sich aus der Struktur deines Reports. Datensätze können natürlich nur durchlaufen werden, wenn es in der Preistabelle auch Daten gibt die der von dir angegebenen Bedingung entsprechen: DataItemLink : "Customer No.=FIELD(No.)". Ohne Daten kann diese Bedingung niemals wahr sein. Ich gebe zu, dass ich etwas rudimentär erklärt, passt aber in diesem Fall.Frage 2 : Der Report überspringt auch die Debitoren, die noch keinen Eintrag haben.
1. März 2010 10:39