Einzelnen Beitrag anzeigen

Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#3

Re: SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

  Alt 23. Mär 2004, 01:38
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ß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat