Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Nur gesuchte Datensätze im DBGrid anzeigen (https://www.delphipraxis.net/167534-nur-gesuchte-datensaetze-im-dbgrid-anzeigen.html)

m-werk 4. Apr 2012 09:52

Nur gesuchte Datensätze im DBGrid anzeigen
 
Hallo Leute!

So, nach knapp 10 Jahren bin ich wieder zurück. Ich bin gerade dabei ein kleines Kundenverwaltungsprogramm zu erstellen. Hat etwas gedauert bis ich wieder drinn bin.

Hab jetzt aber ein kleines Problem noch mit meinem Programm.
Soweit funktioniert alles. Ich möchte mein Programm nur etwas verbessern.

Mit folgendem Code kann ich nach Datensätzen suchen und diese werden mir auch in der DBGrind markiert angezeigt.

Code:
procedure TForm1.BtnSearchClick(Sender: TObject);
begin
  ADOTable1.First;
  while NOT ADOTable1.Eof do
  begin
    if ADOTable1Nachname.Text = EditSearch.Text then
      break
    else
      ADOTable1.Next;
  end;
end;
Es wird, wenn ich nach "Huber" suche, der 1. Huber makiert und angezeigt. Das ist schon richtig so, aber ich möchte NUR alle Huber bzw. alle Personen im DBGrid sehen, die Huber heißen bzw. wo "huber" im Nachnamen vorkommt.

Könnte mir hier jemand behilflich sein?

guinnes 4. Apr 2012 10:10

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
1. Möglichkeit : Nimm anstelle der ADOTable eine ADOQuery
2. Möglichkeit : Tables haben die Eigenschaft Filter und Filtered

p80286 4. Apr 2012 10:11

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Ich würde in diesem Falle mit einer Query arbeiten
Code:
select wasmanbraucht from Tabelle where Name like '%huber%';
(funktioniert wenn die DB nicht casesensitive ist)

Gruß
K-H

m-werk 4. Apr 2012 10:20

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Ok, danke mal für die Antworten.

Wenn ich den select befehl für die Query eingebe, was muss ich als Value eingeben, so dass die Werte vom Feld "EditSearch" herangezogen werden?

p80286 4. Apr 2012 10:26

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
das sollte ungefähr so aussehen:

Code:
myquery.close;
myquery.sql.text:='select name from tabelle where name like :name';
myquery.sql.parameterbyname('name').asstring:=edit1.text;
myquery.open;
wobei Du die entsprechenden Platzhalter (% _) entweder unterwegs dazu packst oder aber dem Benutzer überlässt.

Gruß
K-H

m-werk 4. Apr 2012 10:43

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Ich hab es mal so eingebaut.

Ich habe eine neue ADOQuery1 eingebaut und mit meiner ADOConnection1 verbunden. Unter DataSource habe ich meine DataSource1 eingegeben.

Weiters hab ich noch eine DataSource2 eingebaut und mein DBGrid mit dieser Verbunden. Diese DataSource2 hab ich dann auch mit der ADOQuery1 verbunden.

So, dein Code oben leuchtet mir ein, nur wie baue ich diesen in den Quelltext genau ein? Wenn ich im ADOQuery1 unter Eigenschaften auf SQL klicke, kann ich doch nur den SQL-Code eingeben, oder?

m-werk 4. Apr 2012 11:09

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
So, nun hab ich folgenden Code mal drinn, leider funktioniert dieser nicht:

Code:
procedure TForm1.BtnSearchClick(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text:='select * from kundendaten, where nachname like :name';
  ADOQuery1.SQL.parameterbyname('name').asstring:=EditSearch.Text;
  ADOQuery1.Open;
end;
Eskommt die Meldung: Undeklarierter Bezeichner: 'parameterbyname'

mkinzler 4. Apr 2012 11:10

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Ja dort gibst du dann die parametrisierte Abfrage ein
Code:
select name from tabelle where name like :name;
Später z.B. beim Exit des Editfeldes, brauchst du dann nur den Parameter setzen:

Delphi-Quellcode:
AdoQuery1.Parameters.ParamByName('name').Value := EditSearch.Text;
if AdoQuery1.Active then
    AdoQuery1.Refresh
else
    AdoQuery1.Open;

m-werk 4. Apr 2012 11:24

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Code:
procedure TForm1.EditSearchExit(Sender: TObject);
begin
  ADOQuery1.Parameters.ParamByName('name').Value := EditSearch.Text;
  if ADOQuery1.Active then
    ADOQuery1.Refresh
  else
    ADOQuery1.Open;
end;

procedure TForm1.BtnSearchClick(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text:='select * from kundendaten, where nachname like :name';
  ADOQuery1.SQL.parameterbyname('name').asstring:=EditSearch.Text;
  ADOQuery1.Open;
end;
Es kommt aber immer noch diese Fehlermeldung bei "parameterbyname" in der Codezeile
Code:
ADOQuery1.SQL.parameterbyname('name').asstring:=EditSearch.Text;

mkinzler 4. Apr 2012 11:26

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Schau dir mal die Zuweisung in meinem Code an


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:56 Uhr.
Seite 1 von 5  1 23     Letzte »    

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