今天维护一个老项目是用delphi5 + BDE写的。为了更方便查询数据,就增加一个查询功能.由于数据量查询出来后就比较少,于是就想到Filter like

但 BDE并不支持 Filter = 'name like'  BDE的模糊查询只有' name = A*' 匹配只能从第一个字母开始,无法达到要求.后来在OnFilterRecord中解决

由于

TQuery.Filtered := False;

TQuery.Filtered := True;

会触发OnFilterRecord事件

于是写一个事件处理过程

procedure OnFilterRecord(DataSet: TDataSet; Accetp:Boolean)

begin

Accept := False;//所以值不显示

if Pos('9787',DataSet.FieldsByName('青年文摘').AsString) > 0 then

Accept := True;

end;

得以实现

05-12 19:38