![]() |
DBNavigationBar
Hallo Leute und fast einen Guten Morgen!
Ich hab eine Datenbank programmiert und eine Eingabemaske für diese Datenbank. In das Eingabenmaskenformular habe ich auch ein DBNavigationbar eingebaut. ich habe mit paradox7 eine tabelle erstellt und die erste spalte (sie enthält zahlen) so eingestellt, dass sie immer pro neuen datensatz aufwärts zählen soll also 1.zeile 1 2.zeile 2 usw. wenn ich in meiner grid oder per navibar einen datensatz lösche und danach irgendwann wieder einen neuen erstellen steigt die zahl der 1.spalte immer weiter (von der stelle mit ...ich mit meiner grid oder per navibar einen datensatz lösche....)auch wenn ich vorher 10 datensätze gelöscht habe. Ich hoffe ihr wißt, was ich meine und könnt mir helfen. Danke CU coolstranger |
Re: DBNavigationBar
Da ist das "normale Verhalten" diese Zählers. Das hat einige Vorteile, z.B. wenn du diesen als Zugriffschlüssel in anderen Tabellen nutzt kannst du dir recht sicher sein, dass auf die richtigen Daten zugegriffen wird.
N'Abend Dirk |
Re: DBNavigationBar
Nein nein!
Das Programm ist soweit fertig. Es kommen also keine neuen Tabellen hinzu. Kann ich das irgendwie ändern, dass er wirklich immer nur ab der letzten zahl in der Tabelle an fortlaufend weiterzählt? |
Re: DBNavigationBar
Wenn du ein Feld nimmst, sagen wir mal ID und dieses auf Zähler stellst, wird dieser immer weiter gezählt. Selbst wenn der Datensatz einmal gelöscht wird, bleibt es dabei, das nicht die Lücke zwischen z.b. 51 und 53 sondern hinter den letzten Datensatz z.b. 93 weiter gezählt wird. Dieses Verhalten ist dazu da, um Datensätze eindeutig identifizieren zu können, z. b. um von anderen Programmen oder Tabellen darauf zu greifen zu können.
Wenn du das nicht haben möchtest, mußt du einen eindeutigen Schlüssel entwerfen, der sich nicht wiederholen darf. Für diesen Schlüssel kannst du in der Regel maximal zwei aufeinander folgende Felder an der Spitze (also die ersten Zwei) nutzen. Aber eine Kombi von Name und Vorname währe auch nicht angebracht. Denn es gibt bestimmt mehr als nur einen Klaus Meyer. Zudem du dich dann noch mit den Fehlermeldungen auseinander setzen mußt, wenn jemand versucht, einen Datensatz mit den selben Schlüssel einzugeben. Deshalb belasse den Index lieber mit einen Zähler. Wenn du das mit einen seperaten Zähler machen möchtest, wird aber der Programmcode wahrscheinlich sehr langsam. Denn dann mußt du erst einmal die vorhandenen Löcher suchen, bevor du den neuen Datensatz einfügst. Bei 50 Datensätze macht das bei einen langsamen Arbeitspc ca. ne halbe minute aus. Je nach optimierung deines Codes. |
Re: DBNavigationBar
Hallo Coolstranger,
was Du da beschrieben hast, ist das völlig normale Verhalten eines AutoInc-Wertes. Es werden keine Lücken gefüllt, die durch gelöschte Datensätze hervorgerufen werden. Um die gewünschte Anzeige zu erreichen, könntest Du z.B. ein berechnetes Feld in TTable einfügen und im OnCalcFields-Ereignis den Wert der aktuellen Satznummer zuweisen.
Delphi-Quellcode:
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin Table1LfdNr.Value := Table1.RecNo; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 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