意思是:要查找的字段名djh有以下几个值: cgdd200311001, cgdd200311002,cgdd200311005,cgdd200311006 .当输入'11'时能快速定位到第一条匹配的记录即cgdd200311001,输入'110005'时能快速定位到cgdd200311005这一行..
请问delphi如何做到。。?小弟在此先谢了

解决方案 »

  1.   

    用什么控件连接什么数据库?
    模糊查询其实和Delphi没有必然联系,在SQL语句里写就好了
      

  2.   

    select *from xxx where djh like '%110005%'
      

  3.   

    用sql语句的%,如select * from 表名 where  djh  like  '%11%'就OK了。
      

  4.   

    对呀。用SQL语句的like '%11%' 就好了
      

  5.   

    用database,adoconnection,adoquery,dbgrid;就可以了,
    with adoquery1 do
    begin
    close;
    sql.clear;
    sql.add('select * from tab_name wherre nn like ''%''+:a+''%''');
    parameters.parameterbyname('a').value:=edit1.text;
    open;
    end;
      

  6.   

    with query do
    begin
     close;
     sql.clear;
     sql.add('select * from 表名 where djh like ''%'+edit1.text+'%''');
     open;
    end;
     完全通过..
      

  7.   

    复zzlingaaa(小舟) : 是用bde下的TQuery控件的连接数据库,用dbgrid显示结果集的
      

  8.   

    上述各位大侠都是通过重新读取数据库记录实现的,能否在现有的数据集中查找?这样速度更快,而且该窗口我做成一个通用窗口,通过修改sql.text不好做, table 名称及查找字段名称不确定。 能否通过代码实现?
      

  9.   

    with query do
    begin
     close;
     sql.clear;
     sql.add('select * from 表名 where djh like '+quotedstr('%'+edit1.text+'%''));
     open;
    end;
      

  10.   

    with adoquery1 do
    begin
      close;
      sql.clear;
      sql.add('select * from tab_name wherre nn like ''%''+:a+''%''');
      parameters.parameterbyname('a').value:=edit1.text;
      open;
    end;
    -------------------------------------------------------
    同意!!!!!!!
      

  11.   

    要不你暂时把数据集中的数据存放到一个临时表中,然后用adoquery对象从这个临时表中查询呢?查询语句如下:
    with adoquery1 do
    begin
      close;
      sql.clear;
      sql.add('select * from #tab_name wherre nn like ''%''+:a+''%''');
      parameters.parameterbyname('a').value:=edit1.text;
      open;
    end;
      

  12.   

    var sqlstr;
    begin 
    InStr:=InputBox('模糊查询','输入查询条件','');
      SqlStr:='Select * from [tablename] where djh like ''%'+InStr+'%''';
      with Query do
        begin
          Close;
          Sql.Clear;
          Sql.Add(SqlStr);
          open;
        end;
    end;
      

  13.   

    filter:='BillNo>='+''''+sBillNo+''''+''''+chr(0)+''''+' and BillNo<='+''''+sBillNo+''''+''''+chr(255)+'''';
      

  14.   

    各位大侠,用filter做也碰到这种情况:filter:='djh='+quotedstr(edtsearch.text+'*') 只能筛选出以edtsearch.text值开头的记录。。我是想筛选出djh字段包含edtsearch.text值的所有记录应如何做到???能否从query组件的数据集中再过滤。。?
      

  15.   

    呵呵。。本人实现出来了,用dataset的onFilterRecord事件进行过滤。 本人现在edtsearch的keyup事件中来回地设置dataset的filtered属性为false,true来触发事件,大侠有更好的方法触发onFilterRecord事件过程吗?
      

  16.   

    比如用adoquery连接,用dbgrid显示.
    就这样写:
    begin
       if  ADOQuery1.Active then
       with dbgrid1.datasource.dataset do
           ADOQuery1.close;
          ADOQuery1.sql.clear;
        ADOQuery1.sql.add('select * from table where djh like ''津'+trim(edit1.Text)+'%''');
        ADOQuery1.open;
       end;
    以上代码在edit1的SetFocus中.
      

  17.   

    支持zzlazio的簡單用法!這種方法簡單且好用!
      

  18.   

    filter:='BillNo>='+''''+chr(0)+''''+''''+sBillNo+''''+''''+chr(0)+''''+' and BillNo<='+chr(255)+''''+''''+sBillNo+''''+''''+chr(255)+'''';