![]() |
Datenbank: Access • Version: 2003 • Zugriff über: SQL / Delphi FireDac
Laufende Nummer per SQL Update möglich?
Hallo, ich versuche die Datensätze in einer Stückliste zu aktualisieren z.B wenn ein Datensatz gelöscht wurde.
Beispiel: Datensatz 1 StckListLfdNr 0 Datensatz 2 StckListLfdNr 1 Datensatz 3 StckListLfdNr 2 usw. wenn ich jetzt den Datensatz 2 lösche sollte aktualisiert werden, damit es dann so aussieht: Datensatz 1 StckListLfdNr 0 Datensatz 3 StckListLfdNr 1 Irgendwie funktioniert es hiermit nicht: update StckList set StckListLfdNr = StckListLfdNr-1 where StckListNr ='1013030'; Wenn jemand mir auf die Sprünge helfen kann wäre ich sehr dankbar, da ich blutiger Anfänger bin. LG Harry |
AW: Laufende Nummer per SQL Update möglich?
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;
|
AW: Laufende Nummer per SQL Update möglich?
Hallo Uwe,
mit dem SQL script erhalten alle Artikel den gleichen wert. Es wird nicht durchnummeriert. LG Harry |
AW: Laufende Nummer per SQL Update möglich?
Es wird damit auch nicht durchnummeriert, sondern die nur die Lücke geschlossen. Wenn die Nummerierung vorher nicht stimmt, dann nach dem Script natürlich auch nicht.
Generell wäre ein Beispiel zum Reproduzieren empfehlenswert. |
AW: Laufende Nummer per SQL Update möglich?
Kann man denn generell einfach z.B. 10 Datensätze per Access-SQL durchnummerieren lassen?
Wenn ja, wie würde das SQL aussehen? LG Harry |
AW: Laufende Nummer per SQL Update möglich?
Du brauchst ein Kriterium nachdem Du die Datensätze sortieren kannst.
Und dann kannst Du ROW_NUMBER() verwenden um die Zeilennummer der Sortierten Liste (innerhalb des Queries) zu erhalten und damit dann die Laufende Nummer neu zu befüllen. |
AW: Laufende Nummer per SQL Update möglich?
[deleted]
|
AW: Laufende Nummer per SQL Update möglich?
Zitat:
![]() Bzw DCount ![]() Hilft das? |
AW: Laufende Nummer per SQL Update möglich?
Wenn ich es richtig interpretiere, geht es um eine Stückliste, bei welcher die jeweils nächste freie Positionsnummer vergeben, bzw. die Sortierung angepasst werden soll.
Meistens sind doch Positionsnummern auch noch mit anderen Dokumenten/Zeichnungen verknüpft. Spielt dies in Deinem Fall keine Rolle? |
AW: Laufende Nummer per SQL Update möglich?
Als reines SQL suchst Du nach einem korrelierten Update (correlated Update).
Hier ist soetwas für Access aufgeführt(Englisch). ![]() ..UPDATE VendorRegKeys INNER JOIN Users.. In Deinem Fall wäre es ungefähr ein Selfjoin. Du brauchst ein Select, das alle die Datensätze wiedergibt, die Du updaten möchtest. |
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 |
AW: Laufende Nummer per SQL Update möglich?
Zitat:
|
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.
|
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.
|
AW: Laufende Nummer per SQL Update möglich?
Zitat:
|
AW: Laufende Nummer per SQL Update möglich?
Hmm..
Wir machen etwas ähnliches... Hier mal ein Muster Query:
Code:
Damit würden alle StckListLfdNr neu mit 1 beginnend vergeben werden, bei denen StckListNr ='1013030' ist.
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 Die Sortierungsreihenfolge ist dann die alte StckListLfdNr.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 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-2025 by Thomas Breitkreuz