Using LIKE statement for filtering

delphi, delphi-7

Solution

A `TTable.Filter` isn't a SQL query. `LIKE` isn't supported (neither is `IN`). The supported operators are `=`, `<>`, `>`, `<`, `>=`, '<=`,`AND`,`NOT`and`OR`, according to the documentation

For more complicated filtering, use the TDataSet.OnFilterRecord event:

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;

Problem

Im using this code to filter my table: ``` Table.Filtered := False; Table.Filter := '[' + Field_Search + '] LIKE ''%' + Edit_Search.Text + '%'''; Table.Filtered := True; ``` but it raises this exception: "Operation not applicable." where is problem?

Original source