![]() |
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? |
Re: Spalten kopieren
Hi Susanne,
du könntest es folgendermaßen bewerkstelligen (imho ist eine ADOQuery nur unidirektional, deshalb das DataSet):
Delphi-Quellcode:
MfG
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; Stevie |
Re: Spalten kopieren
so, bisher hab ich nun folgende Lösung gefunden:
Delphi-Quellcode:
Dies funktioniert solange, wie die ZielTabelle leer ist, aber sobald es schon einen Eintrag mit dem Index gibt, kracht es.
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; 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? |
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