我使用如下方法:
AdoQuery1.Filter:='...';
AdoQuery1.Filted:=False;
AdoQuery1.Filted:=True;
结果出错,说“在所要求的名称或序数的数据集中找不到此数据项”,
那我该怎么解决这样的问题呢?

解决方案 »

  1.   

    PR_Query.Filter:=DBGridEh1.SelectedField.FieldName+'='''+DBGridEh1.SelectedField.AsString+'''';
     PR_Query.Filtered:=True;
      

  2.   

    helodd(可爱):
    老兄,怎么进行普通的过滤,我还是知道的,就是对于查找字段会出错,不知道该怎么解决的
      

  3.   

    AdoQuery1.Filted:=False;
    AdoQuery1.Filter:='...';
    AdoQuery1.Filted:=True;应该是你的列名错误,query的时候得知道列名阿
      

  4.   

    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;
      

  5.   

    把table 改为 query。其主要思路好下:
    一、取得lookup字段的主键名
    二、从lookup字段对应的数据集找到lookup对应的关键值
    三、进行过滤
      

  6.   

    你filter之后一定要有内容阿!
    不然你过滤什么阿?
    AdoQuery.filter:= '' ;
    AdoQuery.filter:='fieldname='+QueryStr(value) ;
    AdoQuery.filtered:= true ;
      

  7.   

    to helodd(可爱) :
    adotable1.Filter:=ptmp+'='''+Ltmp+'''';
    最終的結果是lookUpKeyField=''''這個也不能過濾出數據啊。
      

  8.   

    那我是否應該這麼做:AdoQuery1原數據集,有字段id,empID,...;
    AdoQuery2用來查找數據的數據集,含有字段empID和name,查找字段名字是name
    用戶設置按照該name進行查找,比如在edit輸入:張三
    那我到AdoQuery2中找到name='張三'的empID,然後到AdoQuery1中進行過濾,可行嗎?
      

  9.   

    procedure TForm1.ADOQuery1FilterRecord(DataSet: TDataSet;
      var Accept: Boolean);
    begin
      if  DataSet.FieldByName('a').AsString=Edit1.Text then 
         Accept := true
      else 
         Accept := false; //a为lookup字段
    end;
      

  10.   

    最终使用 jiezhi(風依舊) 的方法解决了问题。