Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO Daten in gleicher Tabelle kopieren (https://www.delphipraxis.net/109113-ado-daten-gleicher-tabelle-kopieren.html)

Smiley 24. Feb 2008 19:38

Datenbank: Access • Zugriff über: ADO

ADO Daten in gleicher Tabelle kopieren
 
Ich möchte in einer Tabelle den aktuellen Datensatz kopieren und am Ende als neuen Datensatz anhängen.
Dabei soll alles bis auf das Primärindexfeld kopiert werden.

1. Gibt es eine Funktion die das schon kann ?
2. Ist diese Funktion auch akzeptabel schnell ?
3. Wenn es nichts fertiges gibt, kann man dann wenigstens durch Iteration über die Felder die Daten zwischenspeichern und dann in einen leeren angehängten Datensatz wieder einkopieren. Ein Beispiel würde mir da sehr helfen.
Ich wollte den primitiven Weg über das lesen jedes Feldes und schreiben in einen Record und dann das schreiben aus dem Record in den leeren Datensatz zu Fuß vermeiden.
Wenigstens eine Schleife die Feld 1 bis n in den Record schreibt und dann aus dem Record wieder in die Tabelle.
Ich arbeite mit einem Query DM.QKat und stehe auf dem zu kopierenden Datensatz. Soweit die Voraussetzungen.

DeddyH 24. Feb 2008 19:42

Re: ADO Daten in gleicher Tabelle kopieren
 
SQL-Code:
INSERT INTO Tabelle([alle Felder außer PK])
  SELECT [alle Felder außer PK] FROM Tabelle
  WHERE PK = aktueller PK

Smiley 24. Feb 2008 19:45

Re: ADO Daten in gleicher Tabelle kopieren
 
Den InsertInto Befehl wollte ich ja nehmen, da sagte mir aber ein Kollege, dass man damit nur in eine andere Tabelle schreiben kann, daher habe ich das verworfen.
Kann ich den wirklich für die gleiche Tabelle benutzen ????

DeddyH 24. Feb 2008 19:46

Re: ADO Daten in gleicher Tabelle kopieren
 
Ich wüsste nichts, was dagegenspricht.

mkinzler 24. Feb 2008 19:50

Re: ADO Daten in gleicher Tabelle kopieren
 
Probieren geht über Kollegen :zwinker:

omata 24. Feb 2008 19:50

Re: ADO Daten in gleicher Tabelle kopieren
 
Zitat:

Zitat von Smiley
Den InsertInto Befehl wollte ich ja nehmen, da sagte mir aber ein Kollege, dass man damit nur in eine andere Tabelle schreiben kann, daher habe ich das verworfen.
Kann ich den wirklich für die gleiche Tabelle benutzen ????

Das geht bei MySQL nicht, alle anderen Datenbanksysteme sollten das aber können.

Gruss
Thorsten

DeddyH 24. Feb 2008 19:51

Re: ADO Daten in gleicher Tabelle kopieren
 
Unter Firebird geht' s (man muss nicht alles glauben, was einem die Kollegen so erzählen, aber vielleicht verhält sich Access da auch anders).

mkinzler 24. Feb 2008 19:53

Re: ADO Daten in gleicher Tabelle kopieren
 
Das sollte mit jedem (richtigen) DBMS gehen; sobald das DBMs mehrer Instanzen einer Tabelle verwalten kann

Smiley 24. Feb 2008 20:07

Re: ADO Daten in gleicher Tabelle kopieren
 
Ich habs mal probiert mit folgender Anweisung:
Delphi-Quellcode:
  DM.QKat.SQL.Text:='Insert Into Kataloge [Bildbeschreibung,alteNr,Hersteller]'+
  ' Select [Bildbeschreibung,alteNr,Hersteller]'+
  ' From Kataloge Where BestellNr='+QuotedStr(AktBestNr);
Da kommt nach ExecSQL ein Syntaxfehler in der InsertInto Anweisung.

Was ist hier falsch ?

omata 24. Feb 2008 20:10

Re: ADO Daten in gleicher Tabelle kopieren
 
Versuch mal...
Delphi-Quellcode:
  DM.QKat.SQL.Text:=
    'INSERT INTO Kataloge (Bildbeschreibung, alteNr, Hersteller) ' +
    'SELECT Bildbeschreibung, alteNr, Hersteller ' +
    'FROM Kataloge ' +
    'WHERE BestellNr = ' + QuotedStr(AktBestNr);
Ist die BestellNr eine Autofeld?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz