我用filter对一个数据库表1进行了过滤,过滤的结果是正确的,但接着我再次对表1用filter进行过滤,明明表1中存在这个记录,但filter的结果却没有,我想应该是因为这次过滤是在前一次过滤的结果中进行查找了,所以才会找不到的,但我不知该如何做才可再对表1进行过滤呢,请大家指教!

解决方案 »

  1.   

    先        Filtered:=false;
    然后给    Filter:= ......;赋值
    最后再    Filtered:=true;
      

  2.   

    然后在还原把
    Filtered:=False;
    Filtered:=True;
    Filter:=
    Filtered:=True;
      

  3.   

    我按楼上的试了一下,还是不对啊,原码如下:
    for i:=1 to DataModule1.CRZQuery.RecordCount do
         begin
           CRName:=DataModule1.CRZQuery.FieldByName('CRName').AsString ;
           DataModule1.HolderPassZQuery.Filter :='HolderNo='+ nHolderNo + ' and CRName='+ CRName;
           DataModule1.HolderPassZQuery.Filtered :=true;
           if(DataModule1.HolderPassZQuery.FindFirst)then
           begin
             for j:=1 to DataModule1.HolderPassZQuery.FieldCount-1 do
               HolderPassStringGrid.Cells[j,i]:=DataModule1.HolderPassZQuery.Fields.Fields[j].AsString;
             DataModule1.HolderPassZQuery.Filtered :=false;
           end;
           DataModule1.CRZQuery.Next ;
         end;
      

  4.   

    字符型要加 CRName='''+CRNAME+'''';吧