AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensatz in einer Tabelle kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datensatz in einer Tabelle kopieren

Ein Thema von tr909 · begonnen am 16. Aug 2006 · letzter Beitrag vom 16. Aug 2006
Antwort Antwort
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#1

Datensatz in einer Tabelle kopieren

  Alt 16. Aug 2006, 13:42
Datenbank: access • Version: 2000 • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
omata

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

Re: Datensatz in einer Tabelle kopieren

  Alt 16. Aug 2006, 13:59
Geht das nicht auch unter Access einfach so...

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

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Datensatz in einer Tabelle kopieren

  Alt 16. Aug 2006, 14:08
@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
  Mit Zitat antworten Zitat
omata

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

Re: Datensatz in einer Tabelle kopieren

  Alt 16. Aug 2006, 14:12
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
  Mit Zitat antworten Zitat
shmia

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

Re: Datensatz in einer Tabelle kopieren

  Alt 16. Aug 2006, 14:35
siehe Code-Library:
http://www.delphipraxis.net/internal...ct.php?t=19594
Andreas
  Mit Zitat antworten Zitat
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Datensatz in einer Tabelle kopieren

  Alt 16. Aug 2006, 14:48
Zitat von shmia:
Genau das brauch ich
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
  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 03:18 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