Hallo,
ich benutze delphi5 und Firebird 1.5.
Habe eine Adress TAbelle und im Programm greife ich auf diese Adresstabelle in form einer liste zu.
also ich habe eine Adressliste mit folgenden komponenten:
TDBGrid, das auf ein Tdatasource zugreift,
das wiederrum auf eine TClientDataset zugreift und das mit einem TDataSetProvider verknüpft ist.
und das TDatasetProvider greift auf einen TIBOQuery zu.
und diese liste hat eine filterfunktion die auch sonst immer funktioniert aber bei dem folgenden nicht!!!!
so:
ich habe 3 Adressen mit z.B. folgenden Namen özpolat, Özpolat und ÖZPOLAT drin.
wenn ich mit 'özpola' filtere dann findet er alle drei adressen aber wenn ich mit 'özpolat' filtere dann findet er keinen.
und folgenden Code benutze ich
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43:
| procedure TBasisliste.sbfilterClick(Sender: TObject); var f:string; i:integer; begin inherited; f := edit1.text; if f = '' then begin cd.filter :=''; cd.filtered:=false; sbfilter.down:=false; end else begin if sbfilter.down then begin cd.Filtered:=false; cd.Filter:='';
for i := 0 to cd.Fields.Count-1 do begin if cd.fields[i] is TStringField then begin if cd.filter <> '' then cd.filter := cd.filter + ' OR '; cd.filter := cd.filter + 'UPPER('+cd.fields[i].FieldName + ') LIKE UPPER(' + #39 + '%'+f+'%'+#39+')'; end; end;
if cd.filter <> '' then cd.filtered := true else begin cd.filtered := false; sbfilter.down:=false; end; end else begin cd.filter :=''; cd.filtered:=false; sbfilter.down:=false; end; end; end; |
wenn mir einer helfen oder vielleicht einen besseren vorschlag hat dann bin ich sehr dankbar.