用ADO做的数据库程序如何实现像继续查找功能?就像EXCEL中按F3继续查找.
比如输入一个条件后,系统查找到第一个满足条件的记录,再点击查询按钮时系统进行第二个满足条件的记录查询?

解决方案 »

  1.   

    在查询按钮事件中写
    while for i:=x to adoquery1.recordcount-1 do
    begin
      adoquery1.next;
      if .... then
      begin
        //显示
        x:=adoquery1.recno;
        break;
      end;  
    end;x变量定位全局的,并且在窗口初始化时设为1。
      
      

  2.   

    onkeypress(...)
    begin
      if key=f3 then//我写个大概意思
      begin
        循环递归查找;
        找到退出即可
      end;
    end;
      

  3.   

    请各位看看我的怎么实现?多谢二楼说的,我改了一下我的代码如下,但还是不行?
    procedure TAddypfrm.BitBtn3Click(Sender: TObject);
    var x,i:integer;
    begin
    with adoqyp do
    begin
    close;
    sql.Clear;
    sql.Add('select id,xmmc,xmrj from  药品目录');
    sql.Add('where xmmc like '''+'%'+trim(edit9.Text)+'%'+'''');
    sql.Add('or xmrj like '''+'%'+ansiuppercase(edit9.Text)+'%'+'''');
    open;
    for i:=0 to recordcount-1 do
    begin
    adoqyp.Next;
    if recordcount>=1 then //不知二楼说的IF...THEN 中间该什么.
    begin
    x:=adoqyp.RecNo;
    break;
    end;
    end;
    if fields[0].text<>'' then
    adotable1.Locate('id',fields[0].text,[]);//DBGRID1关联的是ADOtable1,怎么实现继续查找功能.
    end;
    end;
      

  4.   

    要实现继续查找功能至少下面方法是可行的:遍历AdoTable或者用AdoQuery。设全局变量,记录上次成功查询的记录位置。
      

  5.   

    procedure TAddypfrm.BitBtn3Click(Sender: TObject);
    var x,i:integer;
    begin
    with adoqyp do
    begin
    close;
    sql.Clear;
    sql.Add('select id,xmmc,xmrj from  药品目录');
    sql.Add('where xmmc like '''+'%'+trim(edit9.Text)+'%'+'''');
    sql.Add('or xmrj like '''+'%'+ansiuppercase(edit9.Text)+'%'+'''');
    open;
    for i:=0 to recordcount-1 do
    begin
    adoqyp.Next;
    if recordcount>=1 then //不知二楼说的IF...THEN 中间该什么.
    begin
    x:=adoqyp.RecNo;
    break;
    end;
    end;
    if fields[0].text<>'' then
    adotable1.Filter = formart('id = ''%s''',[fields[0].text]); 
    adotable1.filtered = trueend;
    end;