![]() |
Kopieren von TADOTable
Hallo,
ich benötige wieder einmal eure Hilfe. Mein Problem diesmal: Ich habe 2 TADOConnection und will eine Tabelle aus der 'QuellConnection' in die 'ZielConnection' kopieren (incl. aller Daten). Gibt es eine (einfache) Möglichkeit (ähnlich wie bei TTable.TableCreate)???? Schon mal vielen Dank Snake :roll: |
Hallo Snake,
schau dir doch einmal die Komponente Batchmove an, die sollte dein Problem lösen. |
Hallo Snake, 8)
vielleicht hilft Dir dies hier.... Diese Prozedur ist in der Lage gezielt nur bestimmte Felder eines Datensatzes kopieren ...hier alle Felder bis auf zwei die nicht mitkopiert werden sollten: QueryTableCopy(Query1, Table1, ['ID', 'AENDDATUM']; oder alle Felder: QueryTableCopy(Query1, Table1, []; Natürlich die Hauptaufgabe ist hier ALLE Datensätze die in der Query vorhanden sind zu kopieren… Gruß Paul Jr.
Delphi-Quellcode:
(* Komplete SQL-Tabellen kopieren!!!
TQuery (Quelle) in die TTable (Ziel) kopieren. Hier werden NUR gleiche Felder von Querry in die Tabelle kopiert... Aber NUR bis auf verbotene Felder (z.B. ID's und ÄnderungsDatum 'AENDDATUM' sollen nicht mitkopiert werden und dies ist so zu programmieren (Beispiel): QueryTableCopy(Query1, Table1, ['ID', 'AENDDATUM']; *) PROCEDURE QueryTableCopy(Query : TQuery; Tabelle : TTable; VerboteneFelder : ARRAY OF STRING); VAR Index : Integer; // für VerboteneFelder IndexTable : Integer; IndexQuery : Integer; bVerboten : Boolean; BEGIN IF NOT Query.Active THEN Query.Open; IF Query.EOF THEN BEGIN Query.First; IF Query.EOF THEN Exit; END; IF NOT Tabelle.Active THEN BEGIN Tabelle.Open; Tabelle.Append; END ELSE IF Tabelle.State <> dsInsert THEN BEGIN Tabelle.Cancel; Tabelle.Append; END; WHILE NOT Query.EOF DO BEGIN IF Tabelle.State <> dsInsert THEN Tabelle.Append; TRY FOR IndexTable := 0 TO Tabelle.FieldCount - 1 DO FOR IndexQuery := 0 TO Query.FieldCount - 1 DO IF CompareText(Tabelle.Fields[IndexTable].FullName, Query.Fields[IndexQuery].FullName) = 0 THEN BEGIN // kopiere, aber bis auf verbotene Felder (z.B. ID's sollen nicht kopiert werden bVerboten := FALSE; FOR Index := Low(VerboteneFelder) TO High(VerboteneFelder) DO IF CompareText(Tabelle.Fields[IndexTable].FullName,VerboteneFelder[Index]) = 0 THEN bVerboten := TRUE; IF NOT bVerboten THEN Tabelle.Fields[IndexTable].Assign(Query.Fields[IndexQuery]); END; Tabelle.CheckBrowseMode; Tabelle.Cancel; EXCEPT Tabelle.Cancel; RAISE; END; Query.Next; END; END; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 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-2025 by Thomas Breitkreuz