我使用此代码来过滤我的表格:
Table.Filtered := False; Table.Filter := '[' + Field_Search + '] LIKE ''%' + Edit_Search.Text + '%'''; Table.Filtered := True;
但它引发了这个例外:
“Operation not applicable.”
哪里有问题?
解决方法
TTable.Filter不是SQL查询.不支持LIKE(也不支持IN).根据
the documentation,支持的运算符是=,<>,>,<,> =,’< =,AND,NOTandOR` 要进行更复杂的过滤,请使用
TDataSet.OnFilterRecord事件:
procedure TForm1.Table1FilterRecord(Dataset: TDataset; var Accept: Boolean); begin // Don't remember if D7 supports DataSet[FieldName] Syntax; if not,// use DataSet.FieldByName instead,or a persistent field. Accept := Pos(Edit_Search.Text,DataSet[SearchField].AsString) > 0; end;