AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Gelöschten Datensatz wieder verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

Gelöschten Datensatz wieder verwenden

Ein Thema von Angel4585 · begonnen am 26. Mär 2007 · letzter Beitrag vom 26. Mär 2007
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Gelöschten Datensatz wieder verwenden

  Alt 26. Mär 2007, 10:21
Datenbank: Paradox • Version: äh.. • Zugriff über: DB-Kompos
Hallo,

ich hab grad ein altes Projekt rausgekramt, weil ich da ne Funktion einbauen soll.

Problem:

Ein Datensatz wurde in der Haupttabelle gelöscht, also ID:1234 ist jetzt unbelegt.
In einer Protokoll Tabelle habe ich alle gelöschten Datensätze drin mit der Information der alten ID.
kann ich jetzt irgendwie den Datensatz aus der Protokolltabelle in die Haupttabelle schreiben, sodass dieser die gleiche ID wie davor hat?
Die ID wird automatisch mit Auto Inkrement erzeugt.

Danke schonmal



PS: Kaum macht man ne weile kein Paradox mehr, schon vergisst man die Version
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Gelöschten Datensatz wieder verwenden

  Alt 26. Mär 2007, 10:40
Zitat von Angel4585:
In einer Protokoll Tabelle habe ich alle gelöschten Datensätze drin mit der Information der alten ID.
kann ich jetzt irgendwie den Datensatz aus der Protokolltabelle in die Haupttabelle schreiben, sodass dieser die gleiche ID wie davor hat?
Die ID wird automatisch mit Auto Inkrement erzeugt.
NEIN, das geht nicht.
Auto Inkrement Felder haben einen interen Generator (=Zähler), dem man von Aussen nicht verändern kann. (ausser durch Einfügen von neuen Datensätzen)
Es spielt übrigens auch überhaupt keine Rolle, ob nach Löschaktionen Lücken vorhanden sind.
Wenn du die Daten in einer bestimmten Reihenfolge sortiert haben möchtest,
dann muss man eben nach einen Datum/Zeit-Feld oder sonstigem Kriterium sortieren.

Wenn du Master-Detail Beziehungen hat, dann ist ein Auto Inkrement Feld nicht die richtige Technik.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

Re: Gelöschten Datensatz wieder verwenden

  Alt 26. Mär 2007, 10:56
Zitat:
In einer Protokoll Tabelle habe ich alle gelöschten Datensätze drin mit der Information der alten ID.
kann ich jetzt irgendwie den Datensatz aus der Protokolltabelle in die Haupttabelle schreiben
Klingt mir mehr danach, als wenn er glöschte Datensätze wiederherstellen will.

Mir war so, als wenn es z.B. bei mySQL geht, dann doch vermutlich auch hier?

jedenfalls wenn man da die DBs wiederherstellt, dann stimmen die Indizes in den Tabellen ja auch wieder, selbst wenn die Table mit 'nem Autoincrement-Index versehn ist.



Versuch doch einfach mal den Index im Insert/Update-Befehl mit anzugeben?

Ich vermute einfach mal, das der AutoIndex nicht geändert wird, wenn der angegebene Index unter diesem liegt und für den Eintrag auch der angegebene Index verwendet wird.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Gelöschten Datensatz wieder verwenden

  Alt 26. Mär 2007, 11:31
Ne da kommt das das Feld nicht beschrieben werden kann, bzw bei nem SQL-Statement:"Die Operationen INSERT und UPDATE werden bei Feldtyp Autoinkrement nicht unterstützt."
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
hoika

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

Re: Gelöschten Datensatz wieder verwenden

  Alt 26. Mär 2007, 17:59
Hallo,

korrekt,
in DBase könnte man das ev. noch machen,
weil ja nur ein "deleted" Flag gesetzt wird.
Paradox löscht die Daten aber physisch.
Abhilfe könnte ein DbiDoRestructure mit Ändern des AutoInc
nach Integer, einfügen und wieder zurücksetzen auf AutoInc bringen,
aber davor würde ich doch gleich ne neue DB nehmen

Das DbiDoRestructure klappt übrigens nur Exclusiv,
also darf zu diesem Zeitpunkt kein anderer in der Tabelle sein.


Heiko
Heiko
  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:17 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