Einzelnen Beitrag anzeigen

Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
435 Beiträge
 
Delphi 12 Athens
 
#1

TClientDataSet: foCaseInsensitive funzt nicht so richtig mit Umlauten

  Alt 24. Nov 2022, 18:42
Datenbank: TClientDataSet • Version: 1 • Zugriff über: TClientDataSet
Guten Abend,

wenn ich ein TClientDataSet mit foCaseInsensitive filtere funzt das meistens. Jetzt habe ich ein Beispiel, da klappt es nicht mehr und ich bin etwas ratlos. Kann das jemand nachvollziehen?

Bei der aktuellen Auswahl geben beide Filter dasselbe Ergebnis zurück. Wenn man die auskommentierte Variante mit Umlauten verwendet, funktionieren nur noch der 1. Filter mit identischer Groß-/Kleinschreibung.

Delphi-Quellcode:
procedure TFMain.Button2Click(Sender: TObject);
var ClientDataSet1: TClientDataSet;
    Feld1: TWideStringField;
    R1,R2,R3,R4: Integer;
begin
{ClientDataSet + Field erzeugen}
ClientDataSet1:=TClientDataSet.Create(self);
Feld1:=TWideStringField.Create(ClientDataSet1);
Feld1.Name:='Field1';
Feld1.FieldName:='Name1';
Feld1.DataSet:=ClientdataSet1;
{2 Datenzeilen anfügen}
ClientDataSet1.CreateDataSet;
ClientDataSet1.Append;
ClientDataSet1.FieldByName('Name1').Text:='Marc Öberer';
ClientDataSet1.Post;
ClientDataSet1.Append;
ClientDataSet1.FieldByName('Name1').Text:='Marc Oeberer';
ClientDataSet1.Post;
{Filter1 mit gleicher Groß-/Kleinschreibung}
ClientDataSet1.FilterOptions:=[foCaseInsensitive];
//ClientDataSet1.Filter:='Name1 LIKE ''%Marc Öb%''';
ClientDataSet1.Filter:='Name1 LIKE ''%Marc Oeb%''';
ClientDataSet1.Filtered:=true;
R1:=ClientDataSet1.RecordCount;
{Filter2 mit Kleinschreibung}
ClientDataSet1.Filtered:=false;
//ClientDataSet1.Filter:='Name1 LIKE ''%marc öb%''';
ClientDataSet1.Filter:='Name1 LIKE ''%marc oeb%''';
ClientDataSet1.Filtered:=true;
R2:=ClientDataSet1.RecordCount;
{Ergebnis}
Showmessage('Filter1: '+R1.ToString+#13#10+'Filter2: '+R2.ToString);
end;
  Mit Zitat antworten Zitat