Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#8

AW: Suche in Datenbank (TTable) mit Joker am Anfang

  Alt 23. Okt 2011, 19:07
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:
Code:
select * from Tabelle
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.
  Mit Zitat antworten Zitat