Entwickler-Ecke

Datenbanken - Filtern


Roadrunner116 - Mo 19.02.07 20:15
Titel: Filtern
Ich habe den Beitrag Mit tTable & tQuery Arbeiten [http://www.delphi-library.de/topic_Mit+tTable+amp+tQuery+Arbeiten_363.html] durchgelesen.

Ich habe zum Thema filtern jetzt eine Frage:

Ich habe eine ComboBox mit den Feldnamen und ein Editfeld. Jetz soll in der Combobox ein Feldname ausgewählt werden und diese feld soll nach der eingabe im Edit gefiltert werden.

habe jetzt folgendes getestet:

Delphi-Quelltext
1:
2:
3:
tblAdressen.Filtered := FALSE;
tblAdressen.Filter := ' '+ComboBox.Text+'='' '+Edit.Text+' ''';
tblAdressen.Filtered := TRUE;


ich bekomme jetz eine leere BDGrid!
Wie geht das?


raiguen - Mo 19.02.07 22:38

Kein Wunder, dass du ein leeres DBGrid bekommst! Weil dein Fulterausdruck (so wie du ihn gescrieben hast) nun mal definitiv nix bringt - sprich: die Filterbedingung wird nie wahr!
Warum?

Hier noch mal dein FilterAusdruck:
Zitat:

tblAdressen.Filter := ' '+ComboBox.Text+'='' '+Edit.Text+' ''';

Angenommen: ComboBox.Text ist NAME und im Edit.Text steht mustermann dann sieht dein Filterausdruck so aus (kannst selber anhand von ShowMessage(tblAdressen.Filter) leicht selbst überprüfen): NAME=' mustermann '
Erkennen wir, was da schiefgelaufen ist? VOR und NACH dem Filterbegriff steht jeweils ein Leerzeichen und das dürfte mit Sicherheit NICHT im Tabellenfeld so eingetragen sein ;)-> somit greift der Filter ins Leere.
Warum? Tja....die berühmten Hochkommas - die sind hier nicht richtig gesetzt.
So wird's mit dem Filterausdruck besser klappen:

Delphi-Quelltext
1:
2:
3:
tblAdressen.Filter := ComboBox.Text + '=''' + Edit.Text + '''';
//--besser so:
tblAdressen.Filter := ComboBox.Text + '=' + QuotedStr(Edit.Text);


Roadrunner116 - Di 20.02.07 10:15

danke, hab nicht aufgepasst, owllte es übersichtlicher halten ;-)


Roadrunner116 - Sa 24.02.07 18:40

habe doch noch etwas!

Wenn der Datensatz, den ich suche die Straße "Mühlweg" beinhaltet und ich gebe im Edit "Mühl" ein, dann gibt er ja den Daensatz mit Mühlweg nicht aus.
Wie mahct man das, geht das hier auch mit "*"?

Gruß Roadrunner116