dm.ADOTbBug 使用Filter 属性的话,不能包括 查找字段。
方法1
在过滤事件里 使用查找字段。
http://www.itdelphi.com/delphibbs/doc/2001/558361.htm
方法2
就是使用查找字段对应的KeyFields 为字段名。
比如查找字段是 部门名称,对应的数据集里KeyFields是部门编号
对待过滤的数据集不能使用 (LookupField)部门名称= Edit1.Text
只能使用 (查找字段的KeyFields)部门编号= Edit1.Text
http://gb.qin.blog.163.com/blog/static/109655227200982841553937/
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Ptmp:string;
Ltmp:string;
begin
Ptmp:=adotable1.FieldByName(‘aaa‘).KeyFields;
LTmp:=adotable1.FieldByName(‘aaa‘).LookupDataSet.FieldByName(‘Pkey‘).AsString;
adotable1.Filter:=ptmp+‘=‘‘‘+Ltmp+‘‘‘‘;
adotable1.Filtered:=true;
end;
注:
其主要思路好下:
一、取得lookup字段的主键名(KeyField)
二、从lookup字段对应的数据集找到lookup对应的关键值(LookupKeyField)
三、进行过滤
其实 就是取 KeyField的名字 = LookupKeyField的 值