Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Spalten kopieren (https://www.delphipraxis.net/42685-spalten-kopieren.html)

Susanne 22. Mär 2005 16:37

Datenbank: SQLServer • Zugriff über: ADOQuery

Spalten kopieren
 
Hallo,

ich habe zwei Datenbanken: DB1 und DB2 mit verschiedenen Tabellen
nun möchte ich aus der DB1 aus der Tabelle1 die Spalte 5 z.B. in die DB2 in die Tabelle1 in die Spalte5 kopieren. Beide sind eigentlich identisch, einziger Unterschied kann sein, dass die Datentypen sich in der ZielTabelle geändert haben. Die Zuordnung zum Index soll auch erhalten bleiben

Wie mache ich das am besten. Ich wollte die beiden DBs jeweils über über eine ADOQuery ansprechen, nur bleibt jetz die frage, wie mache ich das Kopieren von bestimmten Spalten aus der ersten Tabelle in die zweite Tabelle, zuordnungen zum Index der ersten Tabelle müssen auch so in der Tabelle sein, in die sie hineinkopiert werden.

Jemand eine gute Idee?

Stevie 23. Mär 2005 08:53

Re: Spalten kopieren
 
Hi Susanne,

du könntest es folgendermaßen bewerkstelligen (imho ist eine ADOQuery nur unidirektional, deshalb das DataSet):

Delphi-Quellcode:
while not QuellQuery.Eof do
begin
  ZielDataSet.Locate('ID', QuellQuery.FieldValues['ID'], []);
  ZielDataSet.Edit;
  ZielDataSet.FieldByName('Spalte5').AsString := QuellQuery.FieldByName('Spalte5').AsString;
  ZielDataSet.Post;
  QuellQuery.Next;
end;
MfG
Stevie

Susanne 23. Mär 2005 09:34

Re: Spalten kopieren
 
so, bisher hab ich nun folgende Lösung gefunden:


Delphi-Quellcode:
sql:= 'Select ' +QuellIndex+', '+ QuellSpalten+' from '+ QuellTabelle;
   sql2:= 'Insert into ' +ZielTabelle+ ' ('+ZielIndex+','+ZielSpalten+')' +sql;
   ShowMessage(sql2);
   form1.ADOZiel.SQL.Clear;
   form1.ADOZiel.SQL.Add(sql2);
   form1.ADOZiel.ExecSQL;
Dies funktioniert solange, wie die ZielTabelle leer ist, aber sobald es schon einen Eintrag mit dem Index gibt, kracht es.

Ich müsste also irgendwie die QuellTabelle durchgehen von vorne bis hinten und gucken ob der Index schon in der ZielTabelle exitiert, wenn nicht kann ich es machen wie oben, aber wenn er schon exitiert, dann mache ich das wie bei dir?

wie krieg ich das denn jetzt zusammen?

Stevie 23. Mär 2005 09:45

Re: Spalten kopieren
 
Oder so:
Delphi-Quellcode:
while not QuellQuery.Eof do
begin
  if ZielDataSet.Locate('ID', QuellQuery.FieldValues['ID'], []) then
    ZielDataSet.Edit
  else
  begin
    ZielDataSet.Append;
    ZielDataSet.FieldByName('ID').AsString := QuellQuery.FieldByName('ID').AsString;
  end;
  ZielDataSet.FieldByName('Spalte5').AsString := QuellQuery.FieldByName('Spalte5').AsString;
  ZielDataSet.Post;
  QuellQuery.Next;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.

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