想实现这种功能,我在edit中输入数据,而dbgrid则实时显示符合条件的数据。
比如我想查询A0712这个数据,当我输入A时,dbrid中则显示A开头的所有数据。当我再输入“0”时,dbrid中则显示A0打头的数据……
好像见过,自己试了一下,不行。谢谢各位

解决方案 »

  1.   

    那就在俄Edit的OnChange事件里,改Sql.模糊查询
      

  2.   

    就是楼上的
    with dbgrid1.datasource.dataset do
    begin
      close
      sql.text:='select * from table1'+quotedstr(edit1.text);
      open;
    end;
      

  3.   

    改完了,有错,帮忙看一下是不是SQL语句写得不对!谢谢。
    procedure TF_main_search.Edit1Change(Sender: TObject);
    begin
    if mh.Checked =true then  //如果模糊查询被选中
     begin
       if  ADOQuery1.Active then
       with data_result.datasource.dataset do
           ADOQuery1.close;
          ADOQuery1.sql.clear;
        ADOQuery1.sql.add('select * from ccc where c1 like ''' + edit1.Text + '''%');
        ADOQuery1.open;
       end;
    end;
      

  4.   

    就是楼上的
    with dbgrid1.datasource.dataset do
    begin
      close;
      SQL.Clear;
      sql.text:='select * from table1 where field like '+quotedstr(edit1.text+'%');
      open;
    end;
      

  5.   

    ADOQuery1.sql.add('select * from ccc where c1 like '+''''+trim(edit1.Text)+'%'+'''');
      

  6.   

    ADOQuery1.sql.add('select * from ccc where c1 like ''%'+ edit1.Text + '%''');
      

  7.   

    解决了,谢谢楼上的几位,不过还有一个问题:
    就是我想在所有edit1.text前加上一个固定的字符,比如用户在edit1中输入"c10712",实际上查询的是"过期c10712",这个SQL语句怎么写?
    ADOQuery1.sql.add('select * from ccc where c1 like '+''''过期''''''+trim(edit1.Text)+'%'+'''');对么?
    正确的写法是什么?被SQL搞死了,还迷糊着...我再看一下怎么放分,一会儿就结贴
      

  8.   

    ADOQuery1.sql.add('select * from ccc where c1 like ''过期'+trim(edit1.Text)+'%''');