AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Tabelle löschen und Autowert auf 1 setzen
Thema durchsuchen
Ansicht
Themen-Optionen

Tabelle löschen und Autowert auf 1 setzen

Ein Thema von falco953 · begonnen am 10. Jan 2010 · letzter Beitrag vom 26. Jan 2010
Antwort Antwort
falco953

Registriert seit: 10. Sep 2008
13 Beiträge
 
#1

Tabelle löschen und Autowert auf 1 setzen

  Alt 10. Jan 2010, 21:58
Datenbank: BDE • Zugriff über: DataSource
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
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Tabelle löschen und Autowert auf 1 setzen

  Alt 10. Jan 2010, 22:01
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.
  Mit Zitat antworten Zitat
falco953

Registriert seit: 10. Sep 2008
13 Beiträge
 
#3

Re: Tabelle löschen und Autowert auf 1 setzen

  Alt 10. Jan 2010, 22:35
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.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Tabelle löschen und Autowert auf 1 setzen

  Alt 10. Jan 2010, 22:39
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Tabelle löschen und Autowert auf 1 setzen

  Alt 10. Jan 2010, 22:42
Zitat von falco953:
datenbank bde, paradox (muss so sein)
nein

Datenbank: Paradox, Zugriff über: BDE

DataSource ist eine Komponente, die sowieso schon mal nicht zugreift, sondern man eher durchreicht.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
olaf

Registriert seit: 4. Mai 2009
Ort: Iserlohn
82 Beiträge
 
RAD-Studio 2009 Pro
 
#6

Re: Tabelle löschen und Autowert auf 1 setzen

  Alt 11. Jan 2010, 08:45
Hallo,

versuch "emtytable" bei absolut database oder advantage wird dann der Wert auf 1 gesetzt.

Olaf
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Tabelle löschen und Autowert auf 1 setzen

  Alt 11. Jan 2010, 08:59
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

1.


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
Heiko
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

Re: Tabelle löschen und Autowert auf 1 setzen

  Alt 26. Jan 2010, 10:14
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:41 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