[gelöst] Subform Einträge aktualisieren

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.

Re: Subform Einträge aktualisieren

18. Mai 2009 09:46

Eigentlich hast du schon alles Notwendige in der Frage geschrieben :wink:

Re: Subform Einträge aktualisieren

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.

Re: Subform Einträge aktualisieren

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.

Re: Subform Einträge aktualisieren

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);

Re: Subform Einträge aktualisieren

18. Mai 2009 10:36

Und wenn da noch ein modify hinzukommt?

Re: Subform Einträge aktualisieren

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.

Re: Subform Einträge aktualisieren

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.

Re: Subform Einträge aktualisieren

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.

Re: Subform Einträge aktualisieren

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.

Re: Subform Einträge aktualisieren

18. Mai 2009 11:53

Besten Dank, jetzt hab ich es kapiert.

lg
stony