![]() |
Datenbank: MSSQL • Version: 2019 • Zugriff über: ADO
Übergabe von QRY-Tabelleninhalte an andere Connection
Hallo Leute
ich habe mal eine Frage , ich steh gerade etwas auf den Schlauch ^^ ich habe 2 connections eine zu einer informix tabelle (FDquery mit FDconnection) und ein ADOqry mit adoconnection zu einer MSSQL Datenbank/Tabelle .. gibt es eigentlich eine elegantere Variante als jedes Feld einzeln mit qryvoncon1.fieldbyname('name').assstring:= qryvoncon2.fieldbyname('name').assstring ... etc für alle Felder wenn alle Felder bei beiden Tabellen gleich sind zu übergeben ? hoffe habe mich verständlich ausgedrückt .. mit dem was ich meine ?! ;) bei größeren Tabellen ist das ganz schön aufwendig Danke schon mal Gerd |
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Gelöscht...
|
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
|
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
hmm ok .. schau ich mir mal an .. Danke
|
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Such' bitte mal mit der Suchmaschine Deiner Wahl nach "delphi BatchMove".
In Delphi 7 gibt es aus den BDE-Zeiten noch die Komponente TBatchMove, da kann man Daten zwischen zwei Tabellen verschieben. Diese müssen sich aber nicht in der gleichen Datenbank befinden. ![]() ![]() ![]() |
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Wenn du selber kopierst, dann auch besser .Value anstatt .AsString verwenden.
* einmal für alles was kein String ist, also nicht unnötig in einen String und wieder zurück umwandeln (z.B. Floats können verändert/ungenau werden) * und auch bezüglich NULL, weil der String das NULL ja als '' raus giebt. Oder alternativ innerhalb der Datenbanken bleiben, also die eine DB macht von sich auch ein SELECT in der anderen DB und holt sich die Daten rüber, bzw. schreibt dort drüben. ![]() Sowas können viele DBMS und nennen es z.B. DataLink oder Foreign Data Wrappers (FDW). Das kann einmal eine Gruppe von Funktionen sein, so man ein SQL-Statement in der anderen DB ausführt oder es können "virtuelle" Tabellen bei dir sein, die aber intern alles (Insert/Update/Select) zu einer Tabelle in der anderen DB weiterleiten. |
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Sieh dir mal TDataSetProvider an.
|
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Dein XE7 ist schon ein bissl alt.
Aber grundsätzlich könnte man alternativ, z.B. im FireDAC, mit LocalDataSets arbeiten. Da kannst'e in der einen QueryKomponente auf Inhalte von anderen Queries/DataSets oder sonstwelchen Komponenten (TEdit, TCheckBox, ...) zugreifen. |
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Vielleicht habe ich die Frage nicht richtig verstanden, aber es geht doch um die Felder eines Datensatzes und nicht um die gesamte Datenmenge, oder?
(emphasize be me) Zitat:
|
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Es ist noch komplizierter:
Zwei Datenbanken zwischen denen über unterschiedliche Datenbankkomponenten kommuniziert werden soll. Quelle = FireDac -> Ziel = ADO bzw. umgekehrt. Viele der BatchMovekomponenten wollen aber als Quelle und als Ziel 'nen Nachfolger von TDataSet, so dass die unterschiedlichen Datenbankkommponenten eigentlich "wurscht" sein sollten. Nachfolger von TDataSet rein, Nachfolger von TDataSet raus. Aus oben verlinktem StackOverFlow geklauter Source etwas angepasst und als ungetestete Idee gedacht:
Delphi-Quellcode:
Lektüre dazu:
var
DataWriter: TFDBatchMoveDataSetWriter; DataReader: TFDBatchMoveDataSetReader; BatchMove: TFDBatchMove; begin DataReader := nil; DataWriter := nil; BatchMove := nil; try DataReader := TFDBatchMoveDataSetReader.Create(nil); DataWriter := TFDBatchMoveDataSetWriter.Create(nil); BatchMove := TFDBatchMove.Create(nil); DataReader.DataSet := qryvoncon1; DataReader.Rewind := true; DataWriter.DataSet := qryvoncon2; BatchMove.Options := [poClearDestNoUndo, poCreateDest]; BatchMove.Reader := DataReader; BatchMove.Writer := DataWriter; BatchMove.Execute; finally DataReader.Free; DataWriter.Free; BatchMove.Free; end; end; ![]() |
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
oha .. jep da kann ich dann mal genauer probieren ..
in der Tat xE7 ist nicht das neuste aber da ich in der 11 er Version dummerweise nicht die Datenbank geschichte drinnen hab muss ich die XE7 nehmen @Uwe Raabe es geht um den Inhalt .. Tabellen existieren bereits in Beiden Datenbanken .. nur die Daten müssen rüber Danke Euch für die Anregungen . Gerd |
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Klar, kann man selber z.B.
Delphi-Quellcode:
aber man sollte nie davon ausgehn, dass die Reihenfolge übereinstimmt.
for var i := 0 to QryVonCon1.Fields.Count - 1 do
QryVonCon1.Fields[i].Value := QryVonCon2.Fields[i].Value; also dann so
Delphi-Quellcode:
bzw.
for var i := 0 to QryVonCon1.Fields.Count - 1 do
QryVonCon1.Fields[i].Value := QryVonCon2.FieldByName(QryVonCon1.Fields[i].FieldName).Value;
Delphi-Quellcode:
for var i := 0 to QryVonCon1.Fields.Count - 1 do
if Assigned(QryVonCon2.FindField(QryVonCon1.Fields[i].FieldName)) then QryVonCon1.Fields[i].Value := QryVonCon2.FieldByName(QryVonCon1.Fields[i].FieldName).Value; Wobei das bereits genannte ![]() |
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Danke himitsu
den Ansatz finde ich jetzt gar nicht so übel .. Ich denke mich zu erinnern das ich irgendwo so in der Art schon mal etwas gemacht habe .. schon die 1. Variante geht in meinen Fall, da ich nur Meine Programme von einer Datenbank (ART) auf eine andere umstellen muss und die Tabellen wirklich identich sind. Während einer Umstellungsphase müssen eben beide Tabellen befüllt werden für Reports. (Software Umstelung steht an und .. naja bereits bewehrte Statistiken sollen dann weiter laufen mit neuer Umgebung ) Schade fand Informix auch nicht schlecht .. aber man kann bei Fussionen nicht alles haben ^^ Gerd |
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Wenn du am Anfang noch DisableControls und am Ende EnableControls auf beide Querys anwendest, geht das auch noch ein ganzes Stück schneller.
|
AW: Übergabe von QRY-Tabelleninhalte an andere Connection
Hallo Leute
nur zur Info funktioniert gut .. hab mein Programm fertig habe diese Variante verwendet ..
Delphi-Quellcode:
@ Papaschlumpf73
for var i := 0 to QryVonCon1.Fields.Count - 1 do
QryVonCon1.Fields[i].Value := QryVonCon2.Fields[i].Value; sind nur 1 * in Woche 6 Sätze also Geschwindigkeit spielt hier nicht die Rolle Nochmals Danke an alle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 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