Fehlender Wert aus Tabelle per SQL ermitteln

Guten Abend,

ich habe eine Tabelle „tblAlbum“ mit folgenden Feldern:
idPAlbum - autowert
intNummer - Zahl (Integer)

Die „intNummer“ ermittle ich bei einem neuen Datensatz (eins höher als der höchste Wert).
Wenn ich nun einen Datensatz zwischendrin lösche, dann würde ich gerne diese „intNummer“ recyclen. Jetzt kann ich mir zwar per VBA und SQL ermitteln, ob eine „intNummer“ fehlt (max(intNummer) Anzahl Datensätze). Nun müsste ich allerdings mit einer for…next…Schleife alles durchlaufen um dann den fehlenden Wert zu finden. Bei wenig Datensätzen - kein Problem. Was aber bei vielen?

Gibt es hier auch eine einfache (oder komplizierte) SQL-Anweisung?

Schöne Grüße aus Württemberg,

Oliver.

N’abend,

ich habe eine Tabelle „tblAlbum“ mit folgenden Feldern:
idPAlbum - autowert
intNummer - Zahl (Integer)

wofür benutzt du diese Felder?

Die „intNummer“ ermittle ich bei einem neuen Datensatz (eins
höher als der höchste Wert).

dafür gebit es den Feldtyp Autowert, der macht das automatisch

Wenn ich nun einen Datensatz zwischendrin lösche, dann würde
ich gerne diese „intNummer“ recyclen.

warum? Das hat man früher (dBase) mal gemacht, ist heutzutage aber nicht mehr nötig.

Jetzt kann ich mir zwar
per VBA und SQL ermitteln, ob eine „intNummer“ fehlt
(max(intNummer) Anzahl Datensätze). Nun müsste ich
allerdings mit einer for…next…Schleife alles durchlaufen um
dann den fehlenden Wert zu finden. Bei wenig Datensätzen -
kein Problem. Was aber bei vielen?

richtig = „Blödsinn“ wenn ich das mal so nennen darf

Gibt es hier auch eine einfache (oder komplizierte) SQL-Anweisung?

imho leider nein

die einzige Möglichkeit die ich sehe:
Eine For/Next Schleife und alle Datensäte einfach neu durchnummerieren.

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo,

zum basteln (wie Netwolf schon gesagt hat, hat das Ganze wenig Hintergrundssinn):

http://www.dbwiki.de/wiki.php?title=VBA_Tipp:_Freie_…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Wolfgang,

ich habe eine Tabelle „tblAlbum“ mit folgenden Feldern:
idPAlbum - autowert
intNummer - Zahl (Integer)

wofür benutzt du diese Felder?

Das Feld „intNummer“ gibt mir die Nummer eines Albums aus, z.B. „009“. Wenn ein Album z.B. kaputt ist, dann lösche ich es. Um ständig alle Nummer von 1 bis xxx zu haben, möchte ich eben die fehlenden Nummer bei einem neuen Artikel nutzen.

Jetzt kann ich mir zwar
per VBA und SQL ermitteln, ob eine „intNummer“ fehlt
(max(intNummer) Anzahl Datensätze). Nun müsste ich
allerdings mit einer for…next…Schleife alles durchlaufen um
dann den fehlenden Wert zu finden. Bei wenig Datensätzen -
kein Problem. Was aber bei vielen?

richtig = „Blödsinn“ wenn ich das mal so nennen darf

Das dachte ich mir ja schon fast. :smile:

Gibt es hier auch eine einfache (oder komplizierte) SQL-Anweisung?

imho leider nein

die einzige Möglichkeit die ich sehe:
Eine For/Next Schleife und alle Datensäte einfach neu
durchnummerieren.

Das geht leider nicht, da ich sonst auf den Rückenseiten der Alben ALLE Nummerschilder austauschen muss.

Schöne Grüße,

Oliver.

Moin, Oliver,

Nun müsste ich
allerdings mit einer for…next…Schleife alles durchlaufen um
dann den fehlenden Wert zu finden. Bei wenig Datensätzen -
kein Problem. Was aber bei vielen?

auch keins, jedenfalls nicht bei einer Plattensammlung - viel ist halt relativ.

Mit einer Abfrage à la

 SELECT lagerort
 FROM album
 WHERE lagerort+1 not in (select lagerort from album order by lagerort)
 AND lagerort not in (select max(lagerort) from album);

spürst Du jedenfalls Lücken auf. Zwecks Performance muss Lagerort indiziert sein.

Gruß Ralf