ASCII 以外の文字を含む列名を含む可能性のある TClientDataset があります。そのような列でフィルタリングできないようです。コード例を次に示します。
uses
DB, DBClient;
{$R *.dfm}
procedure TForm34.FormActivate(Sender: TObject);
var
MyDataset: TClientDataSet;
begin
MyDataset := TClientDataSet.Create(nil);
with MyDataset.FieldDefs.AddFieldDef do
begin
Name := 'PLACÓWKA';
DataType := ftString;
end;
MyDataset.CreateDataSet;
MyDataset.Open;
MyDataset.Append;
MyDataset.Fields[0].Value := 'Value_1';
MyDataset.Post;
MyDataset.Append;
MyDataset.Fields[0].Value := 'Value_2';
MyDataset.Post;
MyDataset.Filter := 'PLACÓWKA LIKE ''%Value_1%''';
MyDataset.Filtered := True; //Exception here: Field 'PLAC' not found
end;
設定後MyDataset.Filtered := True
、フィールド「PLAC」が見つからないという例外が発生します。
私が知る限り、問題はユニットのメソッドTExprParser.SetExprParams
にありDBCommon
、フィルターテキストを適切に解析できませんでした。
列の名前を変更する以外に、これでできることはありますか?