关于dbgrid1.DataSource.DataSet.Filter的有关问题

关于dbgrid1.DataSource.DataSet.Filter的问题DELPHI7procedure Tfrm_spwh.spaglChange(Sender: TObject)

关于dbgrid1.DataSource.DataSet.Filter的问题
DELPHI7


procedure Tfrm_spwh.spaglChange(Sender: TObject);
begin
   if Trim(bh.Text) = '' then
    dbgrid1.DataSource.DataSet.Filter := ''
  else
   dbgrid1.DataSource.DataSet.Filter := 'bh like '+''''+'%'+ UpperCase(bhgl.Text) + '%'+'''';
   dbgrid1.DataSource.DataSet.Filtered := True;
end;

编译程序 执行到

dbgrid1.DataSource.DataSet.Filter := 'bh like '+''''+'%'+ UpperCase(bhgl.Text) + '%'+'''';

就报
Operation not applicable
这个错误  请问大家我哪里做的不对啊 
[解决办法]
用的是BDE吧?
改用ADO
[解决办法]
在DataSet的OnFilterRecord事件中控制