AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit Autoinkrement

Problem mit Autoinkrement

Ein Thema von Chris P · begonnen am 1. Jun 2004 · letzter Beitrag vom 1. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2   
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit Autoinkrement

  Alt 1. Jun 2004, 07:38
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?
  Mit Zitat antworten Zitat
mgubler

Registriert seit: 14. Jul 2002
Ort: Krefeld
115 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Problem mit Autoinkrement

  Alt 1. Jun 2004, 07:45
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
Gruß,
mgubler
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Problem mit Autoinkrement

  Alt 1. Jun 2004, 07:46
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Problem mit Autoinkrement

  Alt 1. Jun 2004, 08:16
Kann mir jemand sagen wo hier der Fehler liegt?
Delphi-Quellcode:
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;
Der Wert Daten.Nr ist als Integer deklariert.
Jeder Eintrag erhält hier dieselbe Nummer.
Das soll aber grad nicht der Fall sein.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Problem mit Autoinkrement

  Alt 1. Jun 2004, 08:51
Zitat von Chris P:
Kann mir jemand sagen wo hier der Fehler liegt?
Delphi-Quellcode:
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;
Der Ansatz ist schon verkehrt. In Deinem Source wird die Schleife durchlaufen aber eigentlich
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;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Problem mit Autoinkrement

  Alt 1. Jun 2004, 09:10
Es kommen 2 Fehlermeldungen:

1. Table1.Browse ist ein ungültiger Bezeichner
2. Table1 ist weder im Editier- noch im Eingabemodus
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#7

Re: Problem mit Autoinkrement

  Alt 1. Jun 2004, 09:35
Morgen zusammen,

ich würde es so versuchen:

Delphi-Quellcode:
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;
Gruß
Jochen
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Problem mit Autoinkrement

  Alt 1. Jun 2004, 09:39
Es kommen immer noch die gleichen Fehlermeldungen (siehe oben).
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

Re: Problem mit Autoinkrement

  Alt 1. Jun 2004, 09:43
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);
  ...
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#10

Re: Problem mit Autoinkrement

  Alt 1. Jun 2004, 09:45
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
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 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