Delphi TClientDataset-是否可以按unicode列名进行筛选?

Delphi TClientDataset-是否可以按unicode列名进行筛选?,delphi,filter,delphi-2009,tclientdataset,Delphi,Filter,Delphi 2009,Tclientdataset,我有一个TClientDataset,它可以包含带有非ascii字符的列名。我似乎无法过滤这些栏目。下面是一个示例代码: uses DB, DBClient; {$R *.dfm} procedure TForm34.FormActivate(Sender: TObject); var MyDataset: TClientDataSet; begin MyDataset := TClientDataSet.Create(nil); with MyDataset.FieldDe

我有一个TClientDataset,它可以包含带有非ascii字符的列名。我似乎无法过滤这些栏目。下面是一个示例代码:

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”

据我所知,问题在于
DBCommon
单元中的方法
TExprParser.SetExprParams
无法正确解析过滤器文本


除了重命名列,我还能做些什么吗?

对于非ansi字符,您应该使用带引号的标识符,每个数据库都有其默认值,在MSSQL中,它是大括号[]如:[PLACÓWKA]


如果不使用MSSQL,则应检查数据库文档中是否有适当的引号字符。

尝试引用字段名:
MyDataset.Filter:=“PLACÓWKA”类似于“%Value_1%”我收到错误:无效的筛选表达式字符''”,我想你运气不好。如果可能,请仅使用ASCII字段名。始终避免使用unicode元数据。仅使用纯ASCII。带引号的名称应该可以解析,你只需检查数据库期望的引号字符,如MSSQL[PLACÓWKA]中的大括号。