18. Mai 2009 09:12
Hallo
Ich habe in einer Subform ein Feld Auftragsnr., welches als Lookup auf die Aufträge fungiert. Wenn ich einen Auftrag auswähle, werden versch. Infos vom Auftrag in die Subform übertragen.
Nun möchte ich aber die Möglichkeit schaffen, diese Subform zu aktualisieren, wenn sich in den Aufträgen etwas geändert hat. Sprich ich möchte einen Bottum einbauen, welche die einzelnen Subformzeile durchgeht die die neusten Informationen von den Aufträge holt.
Wie kann ich das lösen?
lg
stony
Zuletzt geändert von stony am 18. Mai 2009 11:53, insgesamt 1-mal geändert.
18. Mai 2009 09:46
Eigentlich hast du schon alles Notwendige in der Frage geschrieben
18. Mai 2009 09:53
Mir ist nur nicht klar, welche Befehle ich hier verwenden muss. Wenn ich manuell den Auftrag nochmals auswähle und bestätige werden die Informationen aktualisiert. Genau dies möchte erreichen.
18. Mai 2009 10:07
Der Code dafür steht entweder in der Tabelle oder der Form (OnLookup oder OnValidate deines Feldes mit der Auftragsnummer - hab ich was vergessen?). OnValidate wäre ideal, denn dann brauchst du das Feld jeweils nur zu validieren.
18. Mai 2009 10:23
In Onvalidate habe ich den Code
- Code:
IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Auftragsnr.") THEN BEGIN
Kundenname:=SalesHeader."Sell-to Customer Name";
Kundenadresse := SalesHeader."Ship-to Address";
Kundenort := SalesHeader."Ship-to City";
"LKW Type" := SalesHeader."LKW Type";
"Gew. Lieferdatum" := SalesHeader."Gew. Lieferdatum";
Bemerkungstext1 := SalesHeader.Bemerkungstext1;
SalesLine.SETRANGE("Document Type",SalesLine."Document Type"::Order);
SalesLine.SETRANGE("Document No.","Auftragsnr.");
IF SalesLine.FINDSET THEN BEGIN
REPEAT
Auftragsgewicht := Auftragsgewicht + SalesLine."Weight delivery quantity";
UNTIL SalesLine.NEXT = 0;
END;
//MODIFY;
END;
Dies funktioniert zwar bei der Eingabe, nur wenn ich dies mit dem Code über den Button aufrufen wird nichts aktualisiert:
- Code:
AufträgeAktualisieren()
IF FINDSET THEN
REPEAT
VALIDATE("Auftragsnr.");
UNTIL NEXT = 0;
CurrForm.UPDATE(FALSE);
18. Mai 2009 10:36
Und wenn da noch ein modify hinzukommt?
18. Mai 2009 10:47
Wenn ich das Modify aktiviere (welches ich im Codebeispiel deaktiviert habe) funktioniert zwar die Aktualisierung, nur leider kann ich keine neue Zeile eingeben, da die Meldung kommt das diese Zeile nicht existiert.
18. Mai 2009 11:05
Worüber läuft deine Schleife? Über das rec in der Subform? Wenn ja, dann definiere dir dafür eine eigene SalesLine-Variable.
18. Mai 2009 11:31
Ja, die Schleife läuft über die Rec´s der Subform. Nur wo soll ich diese neue Variable definieren.
Wenn ich einen neuen Datensatz in der Subform eingebe (neue Hauptdatensatz in der Mainform), dann bekomme ich auch den Fehler.
18. Mai 2009 11:44
Von wo wird das Ganze denn derzeit aufgerufen? Du hast doch einen neuen Button auf der Mainform. Also steht dein Code im dortigen OnPush. So etwas wie
- Code:
SalesLineXY.SetRange("Document Type","Document Type");
SalesLineXY.SetRange("Document No.","No.");
if SalesLineXY.findset then
repeat
SalesLineXY.Validate("Auftragsnr.");
SalesLineXY.modify;
until SalesLineXY.next=0;
Wobei mir allerdings die Aktualisierung des Auftragsgewichts in dem Code, den du gelistet hast, Sorgen macht ... evtl. müsste man doch die Zeilen ohne diese Aktualisierung kopieren, und dann das validate("Auftragsnr.") ersetzen.
Zuletzt geändert von McClane am 18. Mai 2009 11:55, insgesamt 1-mal geändert.
18. Mai 2009 11:53
Besten Dank, jetzt hab ich es kapiert.
lg
stony
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.