Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensatz in einer Tabelle kopieren (https://www.delphipraxis.net/75242-datensatz-einer-tabelle-kopieren.html)

tr909 16. Aug 2006 13:42

Datenbank: access • Version: 2000 • Zugriff über: ADO

Datensatz in einer Tabelle kopieren
 
Moin. Ich habe folgendes Problem. Ich möchte Datensatze in einer Tabelle kopieren. Ich habe auch schon was zusammengebastelt aber das funktioniert. Sprich es wird nichts kopiert.

Delphi-Quellcode:
function TForm1.CopyVorgang(ds : TADODataSet; akte: string):boolean;
var
  fields : array[0..20] of Variant;
  i : integer;
begin
   for i := 0 to ds.FieldCount -1 do
    fields[i] := ds.FieldList[i].AsVariant;
  ds.InsertRecord([nil,akte]);
  ds.Edit;
  for i := 2 to ds.FieldCount-1 do
    ds.FieldByName(ds.FieldList[i].FieldName).AsVariant := fields[i];
   // oder ds.FieldList[i].AsVariant := fields[i]
  ds.Post;
end;
damit möchte ich den aktuellen datensatz kopieren, wobei das erste feld ein autofeld ist und das zweite feld entsprechend geändert werden kann. Der neue Datensatz wird ja auch richtig eingefügt (ds.InsertRecord) aber es werden keine Daten kopiert. Ich hab am Ende auch schon ein Post versucht, aber dann kommt nur die Meldung "Die zum aktualisieren angegebene zeile wurde nicht gefunden. Einige Werte wurde seit dem letzten Lesen ggf. geändert"

Gruß
tr909

omata 16. Aug 2006 13:59

Re: Datensatz in einer Tabelle kopieren
 
Geht das nicht auch unter Access einfach so...

SQL-Code:
INSERT INTO tabelle
SELECT *
FROM tabelle
WHERE id = ???
Gruss
Thorsten

tr909 16. Aug 2006 14:08

Re: Datensatz in einer Tabelle kopieren
 
@omata
Das ist ja auch ne feine Sache. Man lernt ja nie aus *freu*
Nur leider geht es in diesem Fall nicht, da eine zeile einen Primärschlüssel enthält, der durch das * from tabelle mit kopiert wird, und dadurch doppelte Werte erzeugen würde.

Aber auf jedenfall ist es so schon mal einfacher als 20 mal mit FieldByName, etc

Trotzdem würde ich auch gerne wissen wo der Fehler in meiner obigen Kontruktion liegt.

Gruß und Dank
tr909

omata 16. Aug 2006 14:12

Re: Datensatz in einer Tabelle kopieren
 
Sorry, das ich nochmal nerve...

SQL-Code:
INSERT INTO tabelle (spalte1, spalte2, spalte3)
SELECT 2 AS spalte1, spalte2, spalte3
FROM tabelle
WHERE id = 1
spalte1 = PK

Gruss
Thorsten

shmia 16. Aug 2006 14:35

Re: Datensatz in einer Tabelle kopieren
 
siehe Code-Library:
http://www.delphipraxis.net/internal...ct.php?t=19594

tr909 16. Aug 2006 14:48

Re: Datensatz in einer Tabelle kopieren
 
Zitat:

Zitat von shmia

Genau das brauch ich :D
habe nur bei
Code:
// Copy the Record to the Array
  for i := 0 to max do  
    Data[i] := aDataSet.fields[i].value;
for i := 0 durch for i := 1 ersetzt, so wir der Primärschlüssel nicht mitkopiert.

Besten Dank.
tr909


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 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