Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Tabellenfelder 2 versch. Datenbanken vergleichen (https://www.delphipraxis.net/195877-tabellenfelder-2-versch-datenbanken-vergleichen.html)

Luckner 3. Apr 2018 14:31

AW: Tabellenfelder 2 versch. Datenbanken vergleichen
 
Das grosse Problem ist, dass ich auf die Firebird-Tabelle mit TDataset zugreife und auf die ACCESS mit einer ADO-Komponnente. Die Verknüpfung bekommen ich nicht hin.

Verbindung zu Firebird-Datenbank geht über "DatamoduleRohwareLager.DataModule9.IBDatabaseRohw areBewegung.Connected := true;"

Die einzelnen SQL-Statemens funktionieren für sich alleine gut.

Luckner.

joachimd 3. Apr 2018 14:47

AW: Tabellenfelder 2 versch. Datenbanken vergleichen
 
In der Regel dürfte es nicht funktionieren, über zwei verschiedene Datenbanken hinweg eine SQL-Abfrage zu machen. Die beiden wissen ja nichts voneinander.

jobo 3. Apr 2018 14:52

AW: Tabellenfelder 2 versch. Datenbanken vergleichen
 
Zitat:

Zitat von joachimd (Beitrag 1398033)
In der Regel dürfte es nicht funktionieren, über zwei verschiedene Datenbanken hinweg eine SQL-Abfrage zu machen. Die beiden wissen ja nichts voneinander.

Wenn das tatsächlich die Absicht des Codes sein sollte, dann ist es ein Irrweg, ja.
Die Statements aus dem Eröffnungsthread sehen jedenfalls unvollständig aus, ein Gemisch aus Join und Where Syntax.

Falls wirklich Access mit Firebird gejoined werden soll, dann würde ich das (wenn es leider nun mal da ist) in Access selbst machen:
- FB Tabelle oder Viewe in Access verlinken per ODBC
- Abfrage in Access aus Access Tabelle und Firebird Link erzeugen.
- Abfrage in der Anwendung öffnen (oder eben zur Probe gleich in Access)

Delphi.Narium 3. Apr 2018 14:55

AW: Tabellenfelder 2 versch. Datenbanken vergleichen
 
Bitte erkläre mal, was Du genau vorhast, irgendwie scheine ich das noch nicht so recht begriffen zu haben.

Willst Du quasi sowas machen?
SQL-Code:
select t1.ROHWARENR, t1.FORMAT, t1.OBERMATERIAL
from Accessdatenbank.ROHWARESTAND t1
LEFT JOIN Firebirddatenbank.Artikel t2
on t1.ROHWARENR = t2.Art-Nr
where t1.FORMAT <> t2.Format');
OR t1.OBERMATERIAL <> t2.Numerierung
order by ROHWARENR
Wenn ja, dann führe Dir mal diese Anleitung zu Gemüte: Importieren von oder Verknüpfen mit Daten in einer anderen Access-Datenbank

Beim Zugriff über ADO / ODBC könnte das, sofern ein entsprechender Treiber für Firebird eingerichtet ist, funktionieren.

Jobo beschreibt ja, wie es gehen sollte.

himitsu 3. Apr 2018 15:08

AW: Tabellenfelder 2 versch. Datenbanken vergleichen
 
Zitat:

Zitat von joachimd (Beitrag 1398033)
In der Regel dürfte es nicht funktionieren, über zwei verschiedene Datenbanken hinweg eine SQL-Abfrage zu machen. Die beiden wissen ja nichts voneinander.

Viele DBMS bieten Funktionen/Extensions an, wo man in der DB zu anderen DB oder gar anderen DBMS eine Verbindung aufbaut und Abfragen schicken kann.

z.B.
Cross-Server-Tabelle > Foreign Data Wrappers (permanent DB Link)
https://www.postgresql.org/docs/9.2/...tawrapper.html
https://wiki.postgresql.org/wiki/Foreign_data_wrappers

Cross-Server-Link > DB Link (temporär, old style)
https://www.postgresql.org/docs/9.3/static/dblink.html

jobo 3. Apr 2018 15:12

AW: Tabellenfelder 2 versch. Datenbanken vergleichen
 
Zitat:

Zitat von himitsu (Beitrag 1398037)
Viele DBMS bieten Funktionen/Extensions an, wo man in der DB zu anderen DB oder gar anderen DBMS eine Verbindung aufbaut und Abfragen schicken kann.

Aber eher nicht über Delphi Datenmodule, oder?

himitsu 3. Apr 2018 15:14

AW: Tabellenfelder 2 versch. Datenbanken vergleichen
 
Zitat:

Zitat von jobo (Beitrag 1398038)
Aber eher nicht über Delphi Datenmodule, oder?

Doch.
FireDAC kann es

Bei Google suchenLocalSQL
Bei Google suchenFireDAC LocalSQL



Aber wie gesagt, mindestens eine der beiden DBMS kann sowas bestimmt auch serverseitig.
z.B. in MS-Access eine Verbindung zu Firebird aufbauen und dann im MS-Access die SELECTs zu beiden Datenbanken ausführen.

Bei den Foreign Data Wrappers in Postgres kannst du sogar beide SELECTs zusammen in einem JOIN ausführen und den "Vergleich" direkt im SQL und nicht erst clientseitig manuell erledigen.

jobo 3. Apr 2018 15:20

AW: Tabellenfelder 2 versch. Datenbanken vergleichen
 
Oh! Ich bin überrascht!
Ist aber dann dennoch nicht die von Dir genannte Technik einer heterogenen Datenbankverbindung zwischen verschiedenden DBMS.

Luckner 3. Apr 2018 15:21

AW: Tabellenfelder 2 versch. Datenbanken vergleichen
 
Mein Problem ist folgendes:
Es gibt 2 Programme. Das 1. basiert auf Access und es werden bestimmte Artikel in einer Tabelle eingetragen. Das 2. Programm ist auf Firebird aufgebaut. Es werden einige Artikel aus Programm 1 in 2 übernommen und gegebenfalls ergänzt. Obwohl sich die Artikel in Programm 1 nicht mehr ändern sollte, passiert es doch mal. Jetzt wäre es hilfreich, wenn man in bestimmten Abständen, eine Überprüfung starten könnte um die beiden Tabellen miteinander zu überprüfen, ob Artikel 1 immer noch die alten Eigenschaften hat.

Möglicherweise werde ich die Tabelle aus Access erst in eine temporäre Firebird-Tabelle kopieren und dann die Überprüfung starten. Dann kann ich immer noch die Tabelle leeren.

Gruß, Luckner

Delphi.Narium 3. Apr 2018 15:42

AW: Tabellenfelder 2 versch. Datenbanken vergleichen
 
Access kann von Haus aus andere Datenbanken importieren bzw. verknüpfen. Das richtet man sich einmal ein.

Dann kann man auf alle so verfügbaren Tabellen (egal aus welcher DB sie stammen) per SQL (gemeinsam) zugreifen.

Sinnvoll hielte ich es für Deine Situation:

In Access Verknüpfung zur Firebird-Datenbank aufbauen und Konfiguration speichern. In Access 'ne View einrichten, die die von Dir gewünschte Datenprüfung enthält.

Im Programm dann "nur noch" ein select * from View_zur_Pruefung und "fertig ist die Laube".


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz