我想在一个Edit框中录入一个字段,回车后,DBGrid结果集指向最相近的一行记录
请问一下这该怎么实现,用book吗?
最好给出示例代码,谢谢

解决方案 »

  1.   

    不就是查询语句嘛with adoquery1 do
      begin
        close;
        sql.text:='select * from 表名 where 字段 like ''%'+trim(edit.text)+'%''';
        Open;
      end;以上语句就OK了。。adoquery用连接DBGrid那个...
    等着分
      

  2.   

    我想DBGrid中现有记录不变,因为如果查询匹配的结果为空的话,就需要清空Edit,这样比较麻烦
      

  3.   

    1、我想DBGrid中现有记录不变。
       你要的这种效果不会但我有个问题问一下,如果有多条记录匹配,那楼主如何定位呢??
    2、因为如果查询匹配的结果为空的话,就需要清空Edit,这样比较麻烦
       这个加个条件语句就可以了。。判断是否有匹配记录,如果没有清空既可。。
      

  4.   

    你用dataset1.Locate('字段', edit.text, []);就可以了
      

  5.   

    adoquery1.Locate('FieldName',Edit1.Text,[]);
      

  6.   

    locate对模糊匹配好像不支持吧,to:swcsoft
    查询字段右部可以模糊处理,起始部分必须完全匹配,这样应该可以实现的,我手头有个程序就是这样,只是没有源程序
    希望可以得到这样的解法,不行的话就筛选查询记录吧
      

  7.   

    给你一段代码
    procedure TSearchDlg.SearchEdChange(Sender: TObject);
    begin
      SearchButton.Enabled := SearchEd.Text <> '';
      if  SearchEd.Text <> '' then
      datasource.DataSet.Filter :=OrderCombo.keyvalue+' like  '''+searched.text+'%'''
      else
      datasource.DataSet.Filter :='';
      datasource.DataSet.Filtered := true;
    end;
      

  8.   

    其中OrderCombo是你查询结果的字段列表即条件的列表,比如代码-dm,代码名称-dmmc 
    得面的结果是datasource.DataSet.Filter=dm like 'list%'
      

  9.   

    把OPTIONS属性中dgMultiSelect设置为true就可以了