TQuery verwenden (Anleitung)
Nach oben zu So arbeiten Sie mit Datenbanken
TQuery ist eine abfragebasierte Datenmenge, die eine SQL-Anweisung kapselt und es Anwendungen ermöglicht, auf die Ergebnis-Datenmenge zuzugreifen.
So verwenden Sie TQuery:
- Wählen Sie Datei > Neu > Weitere. Das Dialogfeld Objektgalerie wird geöffnet.
- Wählen Sie im Dialogfeld Objektgalerie die Kategorie Delphi-Projekte, und doppelklicken Sie dann auf VCL-Formularanwendung. Der Designer wird angezeigt.
- Verknüpfen Sie die Datenmenge mit einer Datenbank und einer Sitzung.
- Erstellen Sie heterogene Abfragen.
- Rufen Sie eine bearbeitbare Ergebnismenge ab.
- Aktualisieren Sie schreibgeschützte Ergebnismengen.
So verknüpfen Sie eine Datenmenge mit einer Datenbank und einer Sitzung:
- Ziehen Sie aus der Kategorie BDE der Tool-Palette eine TDatabase-Komponente in das Formular.
- Ziehen Sie eine TSession-Komponente in das Formular.
- Weisen Sie die Eigenschaft DatabaseName der TDatabase-Komponente zu, um die Datenbank mit einer BDE-basierten Datenmenge zu verknüpfen. Für die TDatabase-Komponente ist der Datenbankname der Wert der Eigenschaft DatabaseName der Datenbankkomponente.
- Wenn Sie mit einer impliziten Datenbankkomponente arbeiten möchten und für die Datenbank ein BDE-Alias definiert wurde, können Sie als Wert für DatabaseName den BDE-Alias angeben.
Anmerkung: Ein BDE-Alias steht stellvertretend für eine Datenbank und ihre Konfigurationsinformationen. Diese Konfigurationsinformationen differieren je nach Datenbanktyp (Oracle, Sybase, InterBase, Paradox, dBASE usw.).
- Wenn Sie eine implizite Datenbankkomponente für eine Paradox- oder dBASE-Datenbank verwenden möchten, weisen Sie im Objektinspektor der Eigenschaft DatabaseName das Verzeichnis zu, in dem sich die Datenbanktabellen befinden.
- Steuern Sie alle Datenbankverbindungen in der Anwendung über die Standardsitzung.
- Weisen Sie die Eigenschaft SessionName der TSession-Komponente zu, um die Datenmenge mit einer explizit erstellten Sitzungskomponente zu verknüpfen.
Anmerkung: Unabhängig davon, ob Sie die Standardsitzung verwenden oder in der Eigenschaft SessionName die zu verwendende Sitzung explizit angeben, können Sie auf die mit einer Datenmenge verknüpfte Sitzung zugreifen, indem Sie den Wert für die Eigenschaft DBSession abrufen. Beachten Sie, dass bei der Verwendung einer Sitzungskomponente der Wert der Eigenschaft SessionName der Datenmenge mit dem Wert der Eigenschaft SessionName der Datenbankkomponente übereinstimmen muss, mit der die Datenmenge verknüpft ist.
So erstellen Sie gemischte Abfragen:
- 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.
- Geben Sie für die Eigenschaft DatabaseName der TQuery-Komponente keinen Wert ein. Die Namen der Datenbanken werden in der SQL-Anweisung angegeben.
- Weisen Sie der Eigenschaft SQL die SQL-Anweisung zu, die ausgeführt werden soll.
- 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.
- Weisen Sie der Eigenschaft Params die Parameter für die Abfrage zu.
- Schreiben Sie eine Prepare-Methode, um die Abfrage vor ihrer ersten Ausführung vorzubereiten.
- Schreiben Sie eine Open- oder ExecSQL-Methode, je nachdem, zu welchem Typ die auszuführende Abfrage gehört.
- In einer gemischten Abfrage können Sie zur Angabe der Datenbank anstelle eines BDE-Alias auch eine TDatabase-Komponente verwenden.
- Konfigurieren Sie die TDatabase-Komponente so, dass sie auf die Datenbank zeigt, weisen Sie der Eigenschaft Bde.DBTables.TDatabase DatabaseName einen eindeutigen Wert zu, und verwenden Sie diesen in der SQL-Anweisung anstelle eines BDE-Aliasnamens.
So rufen Sie eine bearbeitbare Ereignismenge ab:
- Setzen Sie die Eigenschaft RequestLive der TQuery-Komponente auf True.
- Wenn die Abfrage verknüpfte Felder enthält, behandeln Sie die Ergebnismenge als Nur-Lesen-Ergebnismenge und aktualisieren sie.
Wenn eine Anwendung eine bearbeitbare Ergebnismenge anfordert, was aber aufgrund der Syntax der SELECT-Anweisung nicht möglich ist, gibt die BDE bei Abfragen über Paradox- oder dBASE-Tabellen eine Nur-Lesen-Ergebnismenge bzw. bei SQL-Abfragen über einen externen Server einen Fehlercode aus.
So aktualisieren Sie Nur-Lesen-Ergebnismengen:
- Wenn sich alle Aktualisierungen auf eine einzige Datenbanktabelle beziehen, können Sie die zugrunde liegende Tabelle in einer Ereignisbehandlungsroutine für OnGetTableName angeben.
- Weisen Sie der Eigenschaft UpdateObject der Abfrage das verwendete TUpdateSQL-Objekt zu, um die durchzuführenden Aktualisierungen genauer steuern zu können.
- Weisen Sie den Eigenschaften DeleteSQL, InsertSQL und ModifySQL des Aktualisierungsobjekts die SQL-Anweisungen zu, mit denen die entsprechenden Aktualisierungen an den Daten der Abfrage durchgeführt werden.
Wenn Sie die Aktualisierungen mit Hilfe der BDE zwischenspeichern, müssen Sie ein Aktualisierungsobjekt verwenden.