Hallo Datenbänkler,
Nun verstehe ich aber nicht, ob ich meine bisherige Datenbank inkl. Quelltext auf
SQL umstellen muss oder die Komponente
Query(DBTables) von der
BDE-Komponente nur einfügen und mit TTable verbinden soll?
TQuery und TDataset ersetzen TTable jeweils vollständig. Für eine ganz einfache Darstellung einer Datenbank-Tabelle ist TTable vollkommen ausreichend. Möchtest du jedoch umfanngreiche Manipulationen an der Datenbank vornehmen wie z.B. Filterung, sind TDataset oder TQuery deine Freunde. Das heißt, du verwendest statt einer TTable-Komponente ein TQuery (da du offenbar mit der völlig veralteten Borland Database Engine [
BDE] arbeitest, hast du kein TDataset zur Verfügung).
Setze also dein TQuery auf dein Datenmodul oder deine Form, stelle die im Objektinspektor (
OI)
Databasename ein und doppelklicke im
OI auf das Feld mit der Bezeichnung
SQL. Es erscheint ein Stringlisten-Editor, in dem du deinen
SQL-String eingibst:
wobei
Tabelle den Namen bezeichnet, den die entsprechende Tabelle in der Datenbank besitzt. Danach schaltest du im
OI das Property
Active auf true. Dieselbe Vorgehensweise kannst du auch im Code vornehmen. Gehen wir davon aus, dein TQuery heißt
Q_Adresse und deine Tabelle
Adressen:
Delphi-Quellcode:
Q_Adresse.Active := false;
Q_Adresse.SQL.Clear;
Q_Adresse.SQL.Append('select * from Adressen');
Q_Adresse.Active := true;
Möchtest du deine Tabelle nun filtern, kannst du das entweder im
SQL-Feld tun:
Delphi-Quellcode:
Q_Adresse.Active := false;
Q_Adresse.SQL.Clear;
Q_Adresse.SQL.Append('select * from Adressen where Name=Mustermann');
Q_Adresse.Active := true;
oder eben mittels der eingebauten Filterfunktion:
Delphi-Quellcode:
Q_Adresse.Filtered := false;
Q_Adresse.Filter := 'Name=Mustermann';
Q_Adresse.Filtered := true;
Die zweite Lösung hat die Vorteile, daß du erstens nicht ständig die Verbundung zur Tabelle trennen und wieder herstellen mußt und daß sie zweitens kürzer ist.
Selbstverständlich kannst du dasselbe auch mit der TTable-Komponente erreichen, die ebenfalls über ein Filter-Property verfügt.