Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Leere Zeilen entfernen und neu nummerieren (https://www.delphipraxis.net/16669-leere-zeilen-entfernen-und-neu-nummerieren.html)

Snooze 21. Feb 2004 13:30


Leere Zeilen entfernen und neu nummerieren
 
Hallo,

arbeite mit einer Paradox 7 - Datenbank.

wenn ich jetzt ca. 60 Datensätze habe, sind sie ja von haus aus durchnummeriert...

wenn ich diese jetzt lösche und neu anfange, geht die Nummer bei 61 weida

kann ich dies auf 0 setzen oder leere Zeilen komplett entfernen und neu durchzählen lassen?

Danke für Hilfe

Ciao

Stefan

Luckie 21. Feb 2004 16:53

Re: Leere Zeilen entfernen und neu nummerieren
 
Die ID eines Datensatzen identifiziert einen Datensatz eindeutig mehr nicht. Schon einmal vergebene werden nicht neu vergeben. Und wenn du jetzt einen anfügst wird bei der letzten ID weitergemacht. Da man mit der ID sonst nichts weiter amchen sollte, sollte es dir egal sein, was für eine ID der neue Datensatz bekommt.

Snooze 21. Feb 2004 17:33

Re: Leere Zeilen entfernen und neu nummerieren
 
doch in meinem Falle schon.

die datenbank verlangt ja eine Spalte, die automatisch weiter geht.

und diese verwende ich für mein Prog.

und denn müsste ich doch irgendwie refreshen können.

die datenbank selber führt ja ganz vorne im Database Desktop einen Zähler, der richtig handelt, nur kann ich den nicht auslesen :(

Luckie 21. Feb 2004 17:47

Re: Leere Zeilen entfernen und neu nummerieren
 
Zitat:

Zitat von Snooze
die datenbank verlangt ja eine Spalte, die automatisch weiter geht.

Richtig, um die Datensätze eindeutig identifizieren zu können.
Zitat:

und diese verwende ich für mein Prog.
Und das ist dein Fehler, das macht man nicht.

Snooze 21. Feb 2004 17:52

Re: Leere Zeilen entfernen und neu nummerieren
 
hm ja stimmt, wenn ich meine eigene Zählfunktion in eine eigene Spalte legen würde, könnte ich diese beim Start neu durchsortieren.

aber gibt es irgendwie eine Möglichkeit, doch auf den Zeiger der Datenbank zuzugreifen, weil diese stimmt ja und wird im Database-Desktop ganz rechts angezeigt.

Danke für Tipps

Leuselator 22. Feb 2004 16:25

Re: Leere Zeilen entfernen und neu nummerieren
 
Die Zahl da im Datenbankdesktop hat mit der Konkreten Zahl der Id-Spalte nichts zu tun! Diese Zahl wird jedesmal neu generiert, indem die Zeilen in der Tabelle gezählt werden z.B.:
SQL-Code:
SELECT Count(*)
  FROM TabellenName
liefert die Anzahl der Zeilen in einer Tabelle - bombensicher. Ohne "Wenn" und "Aber".

Stell Dir mal vor, Du hast eine Datenbank, bestehend aus 2 Tabellen:
Code:
[b][color=gray]Tabelle  Feld       Typ     Auto[/color][/b]
Topf     idTopf     int     Ja
 -"-      Durchmesser int     --
 -"-      Inhalt     int     -- 
 -"-      Farbe      char(25) --

und:

[b][color=gray]Tabelle  Feld       Typ     Auto[/color][/b]
Deckel   idDeckel   int         Ja
 -"-      idTopf     int         --
 -"-      Farbe      char(25)    --
Du befüllst nun die Topftabelle und anschließend die Deckeltabelle, alles schön farblich abgestimmt. Dann löscht Du einen Topf aus der Topftabelle und sortierst die idTopfspalte neu und vergibst "frische" fortlaufende Nummern: das Chaos ist perfekt!

Sicher kannst Du vorher mit einigem Aufwand die Deckeltabelle neu sortieren oder was auch immer. Aber stell Dir mal den Aufwand vor, in einer Datenbank mit um die 100 Tabellen, und mehreren Millionen Datensätzen, von deren richtigem Zusammenhang viel Geld oder gar Menschen abhängen...

Daher rührt man solche Id-Spalten unter keinen Umständen an.

Hoffe, das trägt ein wenig zum besseren Verständnis bei.
Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz