Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Suche in der Datenban und Ausgabe im DBGrid??? (https://www.delphipraxis.net/52850-suche-der-datenban-und-ausgabe-im-dbgrid.html)

romber 5. Sep 2005 13:45

Datenbank: MSSQL Server • Version: 2000 • Zugriff über: ADO

Suche in der Datenban und Ausgabe im DBGrid???
 
Hallo!

Ich habe einen DBGrid, der über ADOTable mit der Datenbank auf dem MSSQL Server verbunden ist. Im DBGrid werden alle Spalten und alle Datensätze angezeigt. Ich möchte jetzt so eine Filter-Funktion einbauen, die alle Spalter aller Datensätze nach einem Suchbegriff durchsucht und die Treffer in demselben DBGrid anzeigt. Mit "Treffer" sind die Datensätze gemeint, in den der Suchbegriff gefunden wurde. Wie mache ich das?

Bernhard Geyer 5. Sep 2005 13:47

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Du nimmst TADODataset und arbeitest mit Queries:

Delphi-Quellcode:
ADODataset.CommandText := 'SELECT * FROM MeineTabelle where MyFeld = :MyFeld';
ADODataset.ParamByName('MyFeld').AsString := 'xyz';

romber 5. Sep 2005 16:30

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Danke für schnelle Antwort!

Ich habe in einem anderen Beispiel die Lösung gefunden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s: String;
begin
  with ADOQuery1 do
  begin
    active := false;
    sql.clear;
    s := '%' + Edit1.Text + '%';
    sql.add('SELECT * FROM KUNDEN WHERE LOWER(kn) LIKE :suche');
    ParamCheck := true;
    Parameters.ParamByName('suche').Value := LowerCase(s);
    active := true;
    open;
  end;
end;
Ich möchte aber nicht nur die Spalte "kn" durchsuchen, sondern auch einige anderen Spalten. Wie soll in diesem Fall meine WHERE aussehen?

Mr_G 5. Sep 2005 16:45

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Ich bin mir nicht sicher aber könnte man das dann nicht mit OR verknüpfen?
Etwa so:
SQL-Code:
SELECT * FROM KUNDEN WHERE (LOWER(kn) LIKE :suche) OR (LOWER(xy) LIKE :suche)

romber 5. Sep 2005 17:49

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Zitat:

Zitat von Mr_G
Ich bin mir nicht sicher aber könnte man das dann nicht mit OR verknüpfen?
Etwa so:
SQL-Code:
SELECT * FROM KUNDEN WHERE (LOWER(kn) LIKE :suche) OR (LOWER(xy) LIKE :suche)

Wäre logisch. Ich habe es auch versucht, SQL meldet zwar kein Fehler, es wird trotzdem nur die erste Bedingung erfüllt. Noch Ideen?

Sharky 5. Sep 2005 17:55

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Hai romber,

hast Du einmal versucht für die zweite "Like-Abfrage" einen eigenen Parameter anzugeben (:suche2)?
Nicht das da etwas bei der Parameter Zuweisung falsch läuft.

romber 5. Sep 2005 18:05

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Nee, geht auch nicht :(

marabu 5. Sep 2005 19:01

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Hi romber,

ob es das gewünschte Ergebnis bringt, steht auf einem anderen Blatt, aber funktionieren sollte das hier:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
  i: Integer;
begin
  with ADOQuery1 do
  begin
    s := '%' + AnsiLowercase(Edit1.Text) + '%';
    sql.Clear;
    sql.Add('SELECT * FROM KUNDEN WHERE LOWER(kn) LIKE :suche ');
    sql.Add('OR LOWER(xy) LIKE :suche ');
    sql.Add('OR LOWER(yz) LIKE :suche ');
//  for i := 0 to ParamCount - 1 do // Danke Sharky für deine Korrektur
    for i := 0 to Parameters.Count - 1 do
      Parameters.Items[i].Value := s;
    open;
  end;
end;
Grüße vom marabu

romber 5. Sep 2005 19:10

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Zitat:

Zitat von marabu
Hi romber,

ob es das gewünschte Ergebnis bringt, steht auf einem anderen Blatt, aber funktionieren sollte das hier:

Tut es aber nicht :(

Mr_G 5. Sep 2005 19:14

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Ich weiß ja nicht was rauskommen soll aber kann es sein das LIKE vielleicht nicht das ist was du brauchst? Soweit ich weiß bringt das nämlich nur was bei minnimalen Abweichungen vom Original. Vielleicht suchst du einfach nochmal in die Richtung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz