TQuery auf Form (oder TADOQuery o.ä.), dessen
SQL-Eigenschaft folgende Abfrage enthält:
SQL-Code:
SELECT *
FROM user
WHERE ( vorname like :vorname
OR :vorname IS NULL)
AND ( name like :name
OR :name IS NULL)
AND ( plz = :plz
OR :plz IS NULL)
AND ( geburtstag = :geburtstag
OR :geburtstag IS NULL)
Mit folgendem Code kannst Du Dir die Suche komfortabler machen:
Such-Edits auf das Form für jedes durchsuchbare Feld
und einen Suchen-Button, dessen Onclick auf "SuchenClick" verweist.
Delphi-Quellcode:
Procedure TForm1.SuchenClick(Sender: TObject);
begin
DeineQuery.DisableControls; // damit der Suchvorgang nicht in den
// DataAwareControls auf Form sichtbar wird
if DeineQuery.Active
then DeineQuery.Close;
DeineQuery.Prepare;
if EditVorname.Text = ''
then DeineQuery.ParamByName('vorname').Clear // wenn kein Suchbegriff in SuchEdit
// dann Parameter auf NULL setzen
else DeineQuery.ParamByName('vorname').AsString := '''%'+EditVorname.Text+'%''';
if EditName.Text = ''
then DeineQuery.ParamByName('name').Clear
else DeineQuery.ParamByName('name').AsString := '''%'+EditNorname.Text+'%''';
if EditPLZ.Text = ''
then DeineQuery.ParamByName('plz').Clear
else DeineQuery.ParamByName('plz').AsInteger := StrToInt(EditPlz.Text);
if EditGeburtstag.Text = ''
then DeineQuery.ParamByName('geburtstag').Clear
else DeineQuery.ParamByName('geburtstag').AsDateTime := StrToDate(EditGeburtstag.Text);
DeineQuery.Open;
DeineQuery.EnableControls; // Anzeige in Form wieder aktivieren
end;
Nun kannst Du ein und die selbe
Query für verschiedene Varianten benutzen (1-x Suchworte). Du mußt nur noch dafür sorgen, das der Suchen-Button nur "Enabled" ist, wenn mindestens ein Suchkriterium angegeben wurde (ein Suchedit.Text <> ''), wenn Du nicht auch die Möglichkeit haben möchtest, alle Datensätze anzuzeigen.
Gruß