![]() |
Problem mit Autoinkrement
hi leute,
ich habe eine Datenbank mit Paradox erstellt. In dem ersten Feld soll sich ein Index automatisch hochzählen mit Hilfe von einem Autoinkrement, sodass jeder Eintrag seine eigene Nummer hat. Habe ich aber nun 3 Einträge und lösche den 2. Eintrag dann stehen die Nummer 1 und 3 drin. Der 3. Eintrag ist ja jetzt der 2. Und er soll auch dann die Nummer 2 kriegen. Wie kann das ganze geupdated werden, sodass die Indizes neu vergeben werden? |
Re: Problem mit Autoinkrement
Hallo,
soweit ich weiss, geht das nicht. Musst wenn überhaupt wie folgt vorgehen: - Daten in Datei exportieren - Tabelle leeren - die ID aus den Dateien gegen '' ersetzen - Daten in DB importieren Danach hast du wieder alles sortiert! Eine andere Möglichkeit kenne ich nicht! mgubler |
Re: Problem mit Autoinkrement
Hallo Chris P,
ein Autoinc Wert wird immer hochgezählt und kann weder zurückgesetzt werden, noch Lücken schließen. Wenn du diese beiden Funktionalitäten benötigst, musst du einen normalen Integer Wert benutzen und diesen selbst verwalten. Selbst das Zurücksetzen eines Autoinc Wertes geht wie bereits oben geasgt nicht. Du musst dann das Feld, dass den Autoinc Wert darstellt in einen Integer umwandeln (z.B. mit der DB Oberfläche), den Wert zurücksetzen und anschließend wieder in Autoinc umwandeln. |
Re: Problem mit Autoinkrement
Kann mir jemand sagen wo hier der Fehler liegt?
Delphi-Quellcode:
Der Wert Daten.Nr ist als Integer deklariert.
procedure TForm1.UpdateIndex();
var Index: Integer; begin Table1.First; for Index := 0 to Table1.RecordCount-1 do begin Query1,SQL.Add('UPDATE Daten SET Daten.Nr = ' + IntToStr(Index)); // Daten = Name der Datebank Table1.Next; end; end; Jeder Eintrag erhält hier dieselbe Nummer. Das soll aber grad nicht der Fall sein. |
Re: Problem mit Autoinkrement
Zitat:
passiert nix. Versuch es mal so:
Delphi-Quellcode:
procedure TForm1.UpdateIndex();
var Index: Integer; begin Index:=0; Table1.First; Table1.Edit; While Not Table1.EOF do begin Table1.FieldByName('Nr').AsInteger:=Index; Table1.Next; Inc(Index); end; Table1.Post; Table1.Browse; end; |
Re: Problem mit Autoinkrement
Es kommen 2 Fehlermeldungen:
1. Table1.Browse ist ein ungültiger Bezeichner 2. Table1 ist weder im Editier- noch im Eingabemodus |
Re: Problem mit Autoinkrement
Morgen zusammen,
ich würde es so versuchen:
Delphi-Quellcode:
Gruß
procedure TForm1.UpdateIndex();
var Index: Integer; begin Index:=0; Table1.First; While Not Table1.EOF do begin Table1.FieldByName('Nr').AsInteger:=Index; Table1.Edit; TRY Table1.Post; EXCEPT Table1.Cancel; END; Table1.Next; Inc(Index); end; //Table1.Browse; - dieser Befehl ist mir unbekannt Table1.first; end; Jochen |
Re: Problem mit Autoinkrement
Es kommen immer noch die gleichen Fehlermeldungen (siehe oben).
|
Re: Problem mit Autoinkrement
Hallo,
aller guten Dinge sind Drei:
Delphi-Quellcode:
...
Table1.Edit; Table1.FieldByName('Nr').AsInteger:=Index; try Table1.Post; except Table1.Cancel; end; Table1.Next; Inc(Index); ... |
Re: Problem mit Autoinkrement
Tag Chris,
Das Feld "Table1.FieldByName('Nr')" darf natürlich nicht mehr vom Typ AutoInc oder Zähler sein. Ist es das doch, geht natürlich nichts. Felder mit dieser Eigenschaft kann man nicht ändern. Gruß Jochen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 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