AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensätze verschieben
Thema durchsuchen
Ansicht
Themen-Optionen

Datensätze verschieben

Ein Thema von hsbc · begonnen am 5. Mai 2005 · letzter Beitrag vom 7. Mai 2005
 
hsbc

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

Datensätze verschieben

  Alt 5. Mai 2005, 16: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz