![]() |
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:
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.
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; Könnte mir hier jemand behilflich sein? |
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 |
AW: Nur gesuchte Datensätze im DBGrid anzeigen
Ich würde in diesem Falle mit einer Query arbeiten
Code:
(funktioniert wenn die DB nicht casesensitive ist)
select wasmanbraucht from Tabelle where Name like '%huber%';
Gruß K-H |
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? |
AW: Nur gesuchte Datensätze im DBGrid anzeigen
das sollte ungefähr so aussehen:
Code:
wobei Du die entsprechenden Platzhalter (% _) entweder unterwegs dazu packst oder aber dem Benutzer überlässt.
myquery.close;
myquery.sql.text:='select name from tabelle where name like :name'; myquery.sql.parameterbyname('name').asstring:=edit1.text; myquery.open; Gruß K-H |
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? |
AW: Nur gesuchte Datensätze im DBGrid anzeigen
So, nun hab ich folgenden Code mal drinn, leider funktioniert dieser nicht:
Code:
Eskommt die Meldung: Undeklarierter Bezeichner: 'parameterbyname'
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; |
AW: Nur gesuchte Datensätze im DBGrid anzeigen
Ja dort gibst du dann die parametrisierte Abfrage ein
Code:
Später z.B. beim Exit des Editfeldes, brauchst du dann nur den Parameter setzen:
select name from tabelle where name like :name;
Delphi-Quellcode:
AdoQuery1.Parameters.ParamByName('name').Value := EditSearch.Text;
if AdoQuery1.Active then AdoQuery1.Refresh else AdoQuery1.Open; |
AW: Nur gesuchte Datensätze im DBGrid anzeigen
Code:
Es kommt aber immer noch diese Fehlermeldung bei "parameterbyname" in der Codezeile
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;
Code:
ADOQuery1.SQL.parameterbyname('name').asstring:=EditSearch.Text;
|
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 23:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz