Entwickler-Ecke

Datenbanken - Platzhalter in einer ADOTable?


Dave_Bowman - Mi 20.10.04 19:37
Titel: Platzhalter in einer ADOTable?
Hallo allerseits,

ich greife mittels ADOConnection, ADOTable und Datasource auf eine Access-DB (z.B. Adressen) zu und zeige alle Sätze in einem Grid. Funktioniert prima. Jetzt möchte ich einen String in ein Textfeld eingeben und nach diesem String in einem Feld suchen, eine Datenmenge also herstellen:

Delphi-Quelltext
1:
2:
3:
4:
5:
  DS_Klienten.DataSet.Filtered := false;
  if txtSucheKlient.Text <> '' then begin
    DS_Klienten.DataSet.Filter := 'Firma = ' + QuotedStr(txtSucheKlient.Text);
    DS_Klienten.DataSet.Filtered := true;
  end

Das ganze allerdings funktioniert nur, wenn ich die komplette Firma reinschreibe, ich will aber mit Platzhaltern arbeiten. Die funktionieren aber nicht (z.B. ...Filter := 'Firma = ' + QuotedStr('*' + txtSucheKlient.Text + '*');). Wieso nicht?

Als Alternative fällt mir jetzt nur ein, nicht mit einer Table sondern mit 'nem Query zu arbeiten. Aber da müßte ich jetzt doch einiges umstellen, und wer weiß, was dann wieder beim Query nicht funktioniert.

Kann mir jemand helfen? Vielen Dank schonmal vorab.


Dave


MSCH - Mi 20.10.04 19:52

versuchs mal statt mit "*" mit "%" (Prozentzeichen).
grez
msch


smiegel - Mi 20.10.04 19:53

Hallo,

wenn folgendes

Delphi-Quelltext
1:
DS_Klienten.DataSet.Filter := 'Firma LIKE ' + QuotedStr('*'+txtSucheKlient.Text+'*');                    

nicht funktioniert, dann kommst Du um eine Query nicht herum.

@MSCH: Das ist eine Access DB. Und da ist das Jokerzeichen "*".


Dave_Bowman - Mi 20.10.04 21:31

Großartig, Smiegel, das ist es. Vielen Dank, damit funktioniert es prima! Danke auch an MSCH! Bis dann ...
Dave