procedure TForm1.Button1Click(Sender: TObject);
begin
//edit1.text:='(qydm>=01)   and  (qydm<=01ZZ)'
   ADOTable1.Filtered:=true;
   ADOTable1.Filter:=edit1.text;
end;

解决方案 »

  1.   

    你过滤的是字符串,当然不能这么写了
    ADOTable1.Filter:=' (qydm >= ''01'')   and  (qydm <= ''01ZZ'') '试试吧!
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    //edit1.text:='(qydm>=01)   and  (qydm<=01ZZ)'
       ADOTable1.Filtered:=False;
       ADOTable1.Filter:=edit1.text;
       ADOTable1.Filtered:=true;
    end;
      

  3.   

    cgblaochang(老昌) :如果edit.text='qydm=01'则通过,可是加上“>”后就不能通过。
      

  4.   

    同意: findcsdn(findcsdn) 
    应该是数据类型问题
      

  5.   

    那你就这样
    Edit .Text ='(qydm=01 or qydm>01) and (qydm<01ZZ or qydm=01ZZ) '
      

  6.   

    TO findcsdn(findcsdn) :
       你说的没错,但是我要过滤的条件必须由程序返回的,不能直接写成你那样。
      

  7.   

    你过滤串写错了
    //edit1.text:='qydm>=''01'' and  qydm<=''01ZZ'''
      

  8.   

    你用//edit1.text:='(qydm>=01)   and  (qydm<=01ZZ)'的目的是不是过滤以
    ‘01’开头的纪录?
    如果是的话,试一下:
    //edit1.text:='qydm=''01*'''
      

  9.   

    同意上面的做法,不过我觉得是否应该是这样的:
    var
      Str1, Str2, Str: String;  Str1:= '01';
      Str2:= '01ZZ';
      Edit1.Text:= 'qydm >= ''' + Str1 +'''' + ' and qydm <= ''' + Str2 + '''';这只是处于程序代码上的考虑,不过我认为最好在数据库的表中针对QYDM增加一个簇索引,这样可能会好一些;
      

  10.   

    还是把原型写出来吧,我到现在还是没有能解决此问题。begin
            if currnode<>treeview1.items.item[0] then
                 begin
                   s:=strleft(currnode.Text,#32);
                   gltree:='('+'dqdm>='+''''+s+''''+')'+'  '+' and '+'  '+'('+'dqdm<='+''''+s+'ZZZZ'+''''+')';
                   if combobox1.ItemIndex=0 then glcombobox:=''
                   else glcombobox:='  '+' and '+'  '+'('+'hymc='+''''+ combobox1.Items[combobox1.Itemindex]+''''+')';              if ADOTable2.Active=false then ADOTable2.Active:=true;
                  ADOTable2.Filter:=gltree+glcombobox;
                  showmessage(ADOTable2.Filter);
                  ADOTable2.filtered:=true;
                  atreenode:=currnode;
                  //atreenode:=treeview1.selected;
               end;
          end;
      

  11.   


    你过滤的是字符串,当然不能这么写了
    ADOTable1.Filter:=' (qydm >= ''01'')   and  (qydm <= ''01ZZ'') '
                                 _______                 __________
                                    s1                       s2
    试试吧!
    以上代码是可以通过,但是
    我在程序中得到s1和s2,上面的代码什么去改?
      

  12.   

    应该考虑qydm是否是字符类型,如果是那么过滤条件应该是
    ADOTable1.Filter:='(qydm >=''''+edit1.text+'''') and (qydm <= ''''+edit2.text+'''') 
    其中分别在edit1,edit2中写入过滤条件的上下边界
      

  13.   

    错了应该是
    ADOTable1.Filter:='(qydm >='''+edit1.text+''') and (qydm <= '''+edit2.text+''')
    手边没有delphi,抱歉
      

  14.   

    问题的关键是:拼接字符串.
    你要保证拼接完成的字符串中比较的字段用引号包含,即:'S1';
    在DELPHI中 用连续两个单引号拼在字符串中形成一个单引号,你多试试吧