Thema: Delphi Datensätze verschieben

Einzelnen Beitrag anzeigen

hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#1

Datensätze verschieben

  Alt 5. Mai 2005, 15:11
Datenbank: Firebird • Zugriff über: Delphi 7 Professional + Zeos-Lib.
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
  Mit Zitat antworten Zitat