![]() |
Datenbank: BDE • Zugriff über: DataSource
Tabelle löschen und Autowert auf 1 setzen
Hallo,
ich habe eine Tabelle, Tisch.db auf dich per Table und Datasource zugreife. Nun möchte ich einen Button erstellen der den kompletten Inhalt der Tabelle löscht. Das geht mit einer Query und SQL ja. Jetzt ist nur das Problem dass eine Spalte in der Tabelle AutoWert ist und wenn ich in die Tabelle nach dem löschen neue Werte eintrage fängt er nciht bei null sondern da an wo die Tabelle vorher aufhörte. Wie kann ich diesen AutoWert wieder auf 0 setzen? Viele Dank und Grüße Falco953 |
Re: Tabelle löschen und Autowert auf 1 setzen
Welche Datenbank?
Idee... Dafür müsstest du mit einem ALTER TABLE die Spalte wieder in ein Feld ohne AUTOWERT umändern und dann ein weiteres ALTER TABLE abschicken, dass wieder den AUTOWERT aktiviert. Aber warum will man sowas machen? Der Zahlenbereich sollte einige Jahre ausreichen. |
Re: Tabelle löschen und Autowert auf 1 setzen
datenbank bde, paradox (muss so sein)
ja, aber der zahlenbereich muss bei 1 anfangen da der erste eintrag in der tabelle diesen autowert 1 haben muss. |
Re: Tabelle löschen und Autowert auf 1 setzen
Ja, dann probier das doch mal aus. Wie hast du die Tabelle den angelegt (welches SQL-Statement).
Wobei, wenn das Paradox ist, kannst du nicht einfach die Datei löschen und neu anlegen, wenn sowieso alle Daten dadrin gelöscht und eben wieder neu bei 1 begonnen werden soll. Edit: Alternativ, kannst du doch auch den Autowert ausgeben und die ID selber ermitteln und eintragen |
Re: Tabelle löschen und Autowert auf 1 setzen
Zitat:
Datenbank: Paradox, Zugriff über: BDE DataSource ist eine Komponente, die sowieso schon mal nicht zugreift, sondern man eher durchreicht. |
Re: Tabelle löschen und Autowert auf 1 setzen
Hallo,
versuch "emtytable" bei absolut database oder advantage wird dann der Wert auf 1 gesetzt. Olaf |
Re: Tabelle löschen und Autowert auf 1 setzen
Hallo,
das geht aber bei Paradox nicht. Der Umweg über AutoInc -> Integer -> AutoInc wurde ja schon gesagt. Ein Alter Table geht so aber nicht (mit Paradox). Man muss das über DbiDoRestructure machen, Example 3 im Link kommt dem schon ziemlich nahe ![]() Ob ein Drop Field, Add Field klappt, ist die Frage (wegen dem Primary Key). Musst du ausprobieren. Quick&Dirty aus Google (ExpertsExchange)
Delphi-Quellcode:
//sets a autoinc-value
Procedure SetAutoInc(filename : string; Value : Longint); var mystream : tfilestream; begin mystream := tfilestream.create(filename, fmOpenWrite + fmShareExclusive); try mystream.Seek(73, soFromBeginning); mystream.Writebuffer(Value, SizeOf(Value)); finally mystream.Free; end; end; Heiko |
Re: Tabelle löschen und Autowert auf 1 setzen
Hallo,
wenn Du für den Zugriff auf die Tabelle die Komponente TTable benutzt, so kannst Du die Tabelle in der IDE öffnen und dann im Objektinspektor die Eigenschaft StoreDefs auf True setzen. Dadurch wird die Tabellendefinition mit in das Formular übernommen. Nun kannst Du zur Laufzeit hergehen, die Tabelle schließen, die Datei löschen und mit TTable.CreateTable neu erstellen. Damit hast Du eine neue Datei mit den Ursprungsdefinitionen. Bei späteren Änderungen an der Tabellenstruktur muss Du nur darauf achten, dass Du die Definitionen im Formular immer mit anpasst. Dies geht aber über schließen der Tabelle in der IDE (Active auf False im Objektinspektor), Storedefs auf False, kompilieren, Active wieder auf True und Storedefs auf True und wieder kompilieren. Active kannst Du danach im Objektinspektor wieder auf False setzen. Selbst wenn Du alle übrigen Zugriffe über SQL machst, so kannst Du für das Löschen und das Neuerstellen der Tabelle eine Prozedure unter Benutzung einer TTable-Komponente machen. Dies sollte die übrige Programmlogik nicht beeinflussen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 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