Hallo allerseits,
Ich möchte einen definierten Bereich von Datensätzen anhand der SATZNR verschieben. Das Datenfeld SATZNR ist durchgehend von 1 bis zur letzten SatzNr numeriert. Folgendes Beispiel:
6 VonNr
7
8
9
10 BisNr
11
12
13
14 EinfuegeNr
15
Ich möchte wie hier im Beispiel die Datensätze 6 bis 10 von ihrer Position ausschneiden und ab Position 14 (EinfuegeNr) einfügen. Am Ende sollte dann die physische Numerierung so aussehen:
11
12
13
6
7
8
9
10
14
15
Ich verwende dazu folgenden Quellcode: Da SatzNr 0 nicht verwendet wird, speichere ich mir zum Umnumerieren den temporären Satz in SatzNr 0 ab. Im Prinzip lese ich mir die einzelnen Datensätze ein, belege dann das Feld SATZNR mit dem neuen Wert und speichere wieder retour.
Delphi-Quellcode:
FOR J := BisNr DOWNTO VonNr DO BEGIN
FOR I := BisNr+1 TO EinfuegeNr-1 DO BEGIN
DatenModul.ZQ_Anbote.Locate('SATZNR', J, []);
DatenModul.ZQ_Anbote.Edit;
DatenModul.ZQ_AnboteSATZNR.Value := 0;
DatenModul.ZQ_Anbote.Post;
DatenModul.ZQ_Anbote.Locate('SATZNR', I, []);
DatenModul.ZQ_Anbote.Edit;
DatenModul.ZQ_AnboteSATZNR.Value := J;
DatenModul.ZQ_Anbote.Post;
DatenModul.ZQ_Anbote.Locate('SATZNR', 0, []);
DatenModul.ZQ_Anbote.Edit;
DatenModul.ZQ_AnboteSATZNR.Value := I;
DatenModul.ZQ_Anbote.Post;
END;
END;
Das Problem ist, dass zwar die ersten drei Sätze verschoben werden, die letzten beiden aber nicht.
Ideal wäre eine Routine, welche keine doppelte Schleife benötigt und in einem Aufwaschen die Neunumerierung durchführt.
Vielleicht hat jemand schon ein ähnliches Problem mal gelöst und könnte mir da ein paar Tips geben.
mfg
Herbert