Delphi-PRAXiS
Seite 3 von 5     123 45      

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)

guinnes 4. Apr 2012 12:07

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Dann mach das ',' hinter Kundendaten weg, das steht auch bei den Vorschlägen nicht

m-werk 4. Apr 2012 12:10

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Ok, hab ich gemacht.

Eine Sache wäre noch: Das mit den Platzhalter vor und dannach.

Wo werden die denn eingebaut?

mkinzler 4. Apr 2012 12:13

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
An die Stelle an der sonst der Wert steht

Statt
SQL-Code:
Name like '%Müller'
SQL-Code:
Name like :name

m-werk 4. Apr 2012 12:16

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Ja schon aber wenn ich dort dies so eingebe

Code:
where nachname like %:name%
funktioniert das ganze nicht

mkinzler 4. Apr 2012 12:19

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
SQL-Code:
where nachname like :name;
Und die Joker im Paramter:
Delphi-Quellcode:
ADOQuery1.Parameters.ParamByName('name').Value := '%'+ EditSearch.Text + '%';

Bummi 4. Apr 2012 12:19

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Delphi-Quellcode:
ADOQuery1.Parameters.ParamByName('name').Value := '%' + EditSearch.Text + '%';

m-werk 4. Apr 2012 12:29

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Mensch, eh so einfach. Wo ich überall dies versucht hab....

So, die Suche funktioniert FAST. Ich hab diese jetzt noch um 3 weitere Felder erweitert:

Code:
procedure TForm1.BtnSearchClick(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text:='SELECT * FROM kundendaten WHERE nachname LIKE :name OR telefon1 LIKE :telefon1 OR telefon2 LIKE :telefon2';
  ADOQuery1.Parameters.ParamByName('name').Value := '%' + EditSearch.Text + '%';
  ADOQuery1.Parameters.ParamByName('telefon1').Value := '%' + EditSearch.Text + '%';
  ADOQuery1.Parameters.ParamByName('telefon2').Value := '%' + EditSearch.Text + '%';
  ADOQuery1.Open;
  if ADOQuery1.Active then
   ADOQuery1.Refresh
  else
    ADOQuery1.Open;
end;
Ein Problem hab ich noch damit.
Es wird, egal was ich suche, immer der 1. Datensatz mitangezeigt.

DeddyH 4. Apr 2012 12:31

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Das lässt sich auch noch ausbauen:
Delphi-Quellcode:
type
  TTextSearchType = (stBeginsWith, stEndsWith, stContains);
...
 
const
  SEARCHSTRINGS: array[TTextSearchType] of string = ('%%%s', '%s%%', '%%%s%%');
...
 
var
  TextSearchType: TTextSearchType;
...
 
ADOQuery1.Parameters.ParamByName('name').Value := Format(SEARCHSTRINGS[TextSearchType], [EditSearch.Text]);

m-werk 4. Apr 2012 12:38

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Das versteh ich jetzt nicht ganz: Wo kommt der Bereich "const" und "var" genau hin?

m-werk 4. Apr 2012 12:40

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Ok habs kappiert, aber trotzdem bekomme ich immer noch den 1. Datensatz im DBGrind nach der suche mitangezeigt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr.
Seite 3 von 5     123 45      

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