Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DB-übergreifende Abfrage / Kopie einer Tabelle (https://www.delphipraxis.net/3675-db-uebergreifende-abfrage-kopie-einer-tabelle.html)

nostromo73 31. Mär 2003 13:13

Zitat:

Zitat von Paul Jr.
Es ist einfach und sauber... Du stellst via TDataBase getrennte Verbindungen zu jeweiliger Datenbank... und per entsprechende TDatasets (also TQuery oder TTable oder andere...) die an den besagten getrennten TDataBase ?hängen? öffnest Du zuerst die entsprechenden SQL-Tabellen (am besten Query als Quelle und TTable als Ziel)... dann läuftst Du die Quelle seqeuntiel durch und kopierst Du Datensatz für Datensatz in die ZIEL-Datenbank...

@Paul JR.:
deine Lösung ist nur dann nicht so einfach anwendbar, wenn sich die Struktur der zu kopierenden Tabelle von Zeit zu Zeit ändert. Das hätte ich schon dazu schreiben können. Sorry !
Dieser Fall kann in meiner Anwendung auftreten, weil die Quelltabelle aus Datenbank A dynamisch ist, es können also Attribute (Spalten) hinzugefügt werden (es handelt sich um eine andere Anwendung, die mit diesen dynamischen Tabellen arbeitet, kann ich leider nicht ändern !).
Die Interpration der (selten) hinzugefügten Attribute erfolgt dann in meiner Anwendung über eine separate Zuordnungstabelle. Das funzt auch schon problemlos.

Der gesamte Ablauf ist folgendermaßen gedacht:

  1. Fremdanwendung sitzt auf Access-Datenbank A, schreibt Daten in Tabelle1 und ändert auch deren Struktur.

  2. Import von Tabelle1 (Struktur und Daten) into Access-Datenbank B, auch wegen Datensicherung. Dieser Import muss übrigens nur in eine Richtung erfolgen.

  3. Meine Anwendung sitzt auf Datenbank B und verwendet die Daten der importierten Tabelle weiter, d.h. die Daten werden auf die bereits vorhandene Datenstruktur in Datenbank B verteilt. Diese Datenstruktur soll nicht geändert werden, da noch weitere Schnittstellen vorhanden sind.

Kurzum: Ich muss eine dynamisch erweiterbare Tabelle (Struktur+Inhalte) mit ADO von Datenbank A nach Datenbank B kopieren. Das muss doch auch einfacher gehen, als umständlich zwei Querys (dynamische Tabellenstruktur berücksichtigen !) zusammenzubasteln und Datensatz für Datensatz einzeln rüberschaufeln. Ich hatte auch schon überlegt, ob ich von Delphi aus eine Tabelle in Access importieren kann, quasi, als ob ich direkt die mdb öffne und manuell 'Tabelle importieren' wähle. Das wäre auch eine elegante Lösung...

Auf jeden Fall habe ich durch Eure bisherigen Antworten schon viel dazu gelernt. Und darum geht es letztlich...Danke !

Gast 31. Mär 2003 14:01

Hallo Nostromo73 8) ,

(...)
deine Lösung ist nur dann nicht so einfach anwendbar, wenn sich die Struktur der zu kopierenden Tabelle von Zeit zu Zeit ändert. Das hätte ich schon dazu schreiben können. Sorry !
(...)

Natürlich es gibt eine elegantere Lösung... :D ich mache es z.B. so... wenn ich mit einer Unbekannter- SQL- Struktur konfrontiert werde:

1.) Eine Datenbank wird ausgewählt
2.) Alle vorhandene Tabellen werden ausgelesen
3.) Eine Tabelle wird ausgewählt
4.) Aufbau der ausgewählten Tabelle wird analisiert und eine universelle (unabhängige) SQL- Tabellen Definition (also CREATE TABLE blabla, ... NOT NULL , Schlüssel etc...) wird generiert.
5.) Ziel Datenbank wird ausgwält (z.B. ORACLE oder Interbase etc...)
6.) In dem Ziel-Datenbak wird die neue (KLON) Tabelle erzeugt.
7.) Daten werden automatisch von Datenbak A in die Datenbank B kopiert

So...

Wünsche Dir viel Erfolg... :coder:


Gruß

Paul Jr.

nostromo73 31. Mär 2003 14:22

Zitat:

4.) Aufbau der ausgewählten Tabelle wird analisiert und eine universelle (unabhängige) SQL- Tabellen Definition (also CREATE TABLE blabla, ... NOT NULL , Schlüssel etc...) wird generiert.
Danke für die schnelle Antwort !

Noch eine kleine Frage, dann habe ich endlich das nötige Know-How...
Gibt es eine Funktionalität in Delphi, die mir zu einer Tabelle direkt die SQL-Tabellendefintion mitsamt Primärschlüssel etc. und ausspuckt oder muss ich da etwa durch alle Spalten durchgehen und die Attributnamen einzeln an das "Create Table..." anhängen ?

Gast 31. Mär 2003 15:11

also dass ist schon etwas mühsam...dafür das Ergebnis lässt sich später sehen!

Man muss schon richtig den Aufbau einer Tabelle (also z.B. die Spalten durchgehen usw...) analisieren bzw. auslesen...

Dafür gibt’s z.B. TDataSet eigenschaften wie FieldDefs die Dir schon sehr viel verrät...

Ich habe aber schon auch die SQL- SYSTEM- Tabellen analisiert um an gewisse Informationen (wie z.B. Trigger) zu kommen... aber das ist zu unflexibel.. und schwierig (zeitaufwändig)...

Also noch einmal viel Erfolg

Gruß

Paul Jr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr.
Seite 2 von 2     12   

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