Heterogene Abfragen erstellen
Nach oben zu BDE-Datenmengen verwenden - Index
Hinweis: Die Borland Database Engine (BDE) ist veraltet und wird nicht mehr weiterentwickelt. Die BDE wird Unicode beispielsweise nie unterstützen. Sie sollten mit der BDE keine neuen Entwicklungen vornehmen. Überprüfen Sie, ob Sie Ihre vorhandenen Datenbankanwendungen nicht von der BDE nach dbExpress migrieren können.
TQuery unterstützt heterogene Abfragen, die sich auf mehrere verschiedene Server oder Tabellentypen beziehen (beispielsweise Daten aus einer Oracle-Tabelle und aus einer Paradox-Tabelle). Wenn Sie eine heterogene Abfrage ausführen, analysiert und bearbeitet die BDE die Abfrage mithilfe von Local SQL. Da die BDE Local SQL verwendet, wird eine erweiterte, Server-spezifische SQL-Syntax nicht unterstützt.
So führen Sie heterogene Abfragen durch
- Definieren Sie separate BDE-Aliasnamen für jede Datenbank, auf die in der Abfrage zugegriffen werden soll. Verwenden Sie hierzu das Dienstprogramm zur BDE-Verwaltung oder den SQL-Explorer.
- Machen Sie in der Eigenschaft DatabaseName der Komponente TQuery keine Angaben. Die Namen der Datenbanken werden in diesem Fall über die SQL-Anweisung angegeben.
- Geben Sie in der Eigenschaft SQL die auszuführende SQL-Anweisung an. Stellen Sie jedem Tabellennamen in der Anweisung den BDE-Alias für die Datenbank voran, aus der die Tabelle stammt. Diese Angabe muss in Doppelpunkte eingeschlossen werden. Die gesamte Referenz steht in Anführungszeichen.
- Setzen Sie in der Eigenschaft
Params
die Parameter für die Abfrage. - Rufen Sie die Methode Prepare auf, um die Abfrage vor ihrer ersten Ausführung vorzubereiten.
- Rufen Sie eine der Methoden Open oder ExecSQL auf, je nachdem, welchem Typ die auszuführende Abfrage angehört.
Angenommen, Sie definieren einen Alias mit dem Namen Oracle1 für eine Oracle-Datenbank, in der die Tabelle Customer enthalten ist, und den Alias Sybase1 für eine Sybase-Datenbank, in der die Tabelle Orders enthalten ist. Eine einfache Abfrage über diese beiden Tabellen könnte wie folgt aussehen:
SELECT Customer.CustNo, Orders.OrderNo FROM ":Oracle1:CUSTOMER" JOIN ":Sybase1:ORDERS" ON (Customer.CustNo = Orders.CustNo) WHERE (Customer.CustNo = 1503)
In einer heterogenen Abfrage können Sie zur Angabe der Datenbank anstelle eines BDE-Alias auch eine TDatabase-Komponente verwenden. Konfigurieren Sie die TDatabase-Komponente wie gewöhnlich so, dass sie auf die Datenbank zeigt, setzen Sie TDatabase.DatabaseName auf einen Beliebigen, aber eindeutigen Wert, und verwenden Sie diesen Wert anstelle des BDE-Alias in der SQL-Anweisung.