15. November 2019 09:36
Hallo Zusammen,
ich habe folgendes Problem.
Ich möchte zwischen eingefügten Textzeilen und einem Posten in der Sales Line eine Verbindung schaffen. Dafür habe ich in der Tabelle ein neues Integer Feld angelegt.
In den OnInsert der Tabelle Sales Line habe ich Code, der den drüberliegenden Posten (Art, Nr. sind gefüllt) sucht und dessen Line No. in das neue Feld einträgt.
Das funktioniert auch, solange es eine normale Textzeile ist. Textzeile meine ich, Spalten Art, Nr. beide Leer und Description = gefüllt.
Wird jetzt allerdings eine Leerzeile eingefügt und dann eine Textzeile, wird OnInsert nur für die neue Textzeile aufgerufen.
Beispiel:
Doc. No., Line No. Type No. Desc. Parent Line
-------------------------------------------------------------------------------
AN1001 10000 2 R12 Rosen 12er Pack 0
AN1001 20000 0 Farbe rot 10000
AN1001 30000 0 0
AN1001 40000 0 Sorte: Aachener Dom 10000
Beim Debuggen habe ich gesehen, dass ich die Zeilen 40000, 20000 bekomme und die 30000 nicht in meinem Recordset vorhanden ist.
Mein Code ist folgender:
in nLineNo ist die 10000 gespeichert, die bereits davor gefunden worden ist
recSalesLineSiblingLines = Typ Record(Tabelle 37)
- Code:
IF nLineNo > 0 THEN
MESSAGE('Parent is: %1, or %2', nLineNo, recSalesLineSiblingLines."Title No.");
"Parent Line" := nLineNo;
recSalesLineSiblingLines.RESET;
recSalesLineSiblingLines.SETRANGE("Line No.", nLineNo + 1, Rec."Line No.");
recSalesLineSiblingLines.SETFILTER("Document No.", Rec."Document No.");
recSalesLineSiblingLines.SETASCENDING("Line No.", FALSE);
MESSAGE('%1 Kinder gefunden', recSalesLineSiblingLines.COUNT);
IF recSalesLineSiblingLines.FINDSET THEN
REPEAT
recSalesLineSiblingLines."Parent Line" := nLineNo;
recSalesLineSiblingLines.MODIFY;
UNTIL recSalesLineSiblingLines.NEXT = 0;
recSalesLineSiblingLines.SETRANGE("Line No."); //remove the used range
Die Leerzeile wird scheinbar nach der Zeile 40000 eingefügt. In der Datenbank ist diese vorhanden.
Kann mir dabei jemand helfen?
Schöne Grüße
Björn