Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Laufende Nummer per SQL Update möglich? (https://www.delphipraxis.net/213115-laufende-nummer-per-sql-update-moeglich.html)

HCB 31. Mai 2023 14:27

AW: Laufende Nummer per SQL Update möglich?
 
Hallo an Alle,
ich dachte es gäbe eine einfache und schnelle SQL Möglichkeit....

Nun werde ich es so lösen:

for i:= 0 to T_StckList.RecordCount-1 do
begin
T_StckList.Edit;
T_StckList.FieldByName('StckListLfdNr').Value:=i;
T_StckList.next;
end;

LG Harry

freejay 31. Mai 2023 15:36

AW: Laufende Nummer per SQL Update möglich?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1522873)
Dein Code verändert auch die 0. Versuch es mal hiermit.
SQL-Code:
update StckList set StckListLfdNr = StckListLfdNr-1 where StckListNr ='1013030' AND StckListLfdNr > 2;

Doch, das Beispiel funktioniert. Habe ich gerade ausprobiert. Hätte mich auch gewundert, wenn nicht.

Uwe Raabe 31. Mai 2023 15:57

AW: Laufende Nummer per SQL Update möglich?
 
Das funktioniert aber nur, wenn die Voraussetzungen stimmen: Die StckListLfdNr ist fortlaufend vergeben und der Datensatz mit der Nummer 2 wird gelöscht. Das ist aber offenbar nicht immer der Fall.

freejay 31. Mai 2023 16:00

AW: Laufende Nummer per SQL Update möglich?
 
Ist schon klar, dass man die Parameter entsprechend anpassen muss. Aber in dem geschilderten Beispiel funktioniert das problemlos. Der Thread-Ersteller meinte ja, das würde nicht funktionieren.

himitsu 31. Mai 2023 16:23

AW: Laufende Nummer per SQL Update möglich?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1522936)
Das funktioniert aber nur, wenn die Voraussetzungen stimmen:

und es kein UNIQUE/SERIAL auf diesem Feld gibt. ansonsten müsste man vielleicht die Reihenfolge der Daten umdrehen.

HolgerX 2. Jun 2023 12:37

AW: Laufende Nummer per SQL Update möglich?
 
Hmm..

Wir machen etwas ähnliches...

Hier mal ein Muster Query:

Code:
UPDATE x
 SET x.[StckListLfdNr] = x.[Row#]
 FROM (
   SELECT [StckListLfdNr], ROW_NUMBER() OVER (ORDER BY [StckListLfdNr] ASC) AS Row#
   FROM [StckList]
   WHERE StckListNr ='1013030'
 ) x
Damit würden alle StckListLfdNr neu mit 1 beginnend vergeben werden, bei denen StckListNr ='1013030' ist.
Die Sortierungsreihenfolge ist dann die alte StckListLfdNr..


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz