try
        with ADOQuery1 do
        begin
            Close;
            SQL.Clear;
            SQL.Add('SELECT * FROM sjgxx WHERE glcc=1 ORDER BY JGM');
            Open;
            while not eof do
                next;
        end;        with ADOQuery1 do
        begin
            Close;
            SQL.Clear;
            SQL.Add('SELECT * FROM shbxx ORDER BY hbh');
            Open;
            while not eof do
            begin
                sl_Hbh.add(Fieldbyname('hbh').AsString);
                next;
            end;
        end;

解决方案 »

  1.   

    到MS的网站下载MDAC2.8安装试试!
      

  2.   

    1、ADO打补丁
    2、recordcount的定位
      

  3.   

    1、打ADO的补丁;
    2、用DELPHI6以上版本;
    3、在OPEN那里加上一个ADOQuery1.LockType := true;
      

  4.   

    1、打ADO的补丁;
    2、用DELPHI6以上版本;
    3、在OPEN那里加上一个ADOQuery1.LockType := true;
      

  5.   

    加个判断条件
    if not isEmpty then
    begin
      first;
      下同
    end;
      

  6.   

    delphi是盗版的没盗好会有很多问题,无法解释
      

  7.   

    呵呵 我认为 是你的循环条件本身就错了!
    按照你的条件,如果到了最后一条记录,仍然会Next。所以.....
    您可以试试用for i:=0 to recordcount-1 do
      

  8.   

    with ADOQuery1 do
            begin
                Close;
                SQL.Clear;
                SQL.Add('SELECT * FROM sjgxx WHERE glcc=1 ORDER BY JGM');
                Open;
                while not eof do
                    next;
            end;
    这段放在这里有什么用?
      

  9.   

    with ADOQuery1 do
      try
            begin
                Close;
                SQL.Clear;
                SQL.Add('SELECT * FROM sjgxx WHERE glcc=1 ORDER BY JGM');
                Open;
                if not isEmpty then
                begin
                    first;
                    while not eof do
                    next;
                end;
            end;
      finally
       close;
      end;
      

  10.   

    1,用Delphi7
    2, if (not ADOQuery1.active) or (ADOQuery1.RecordCount = 0) then Exit;
      

  11.   

    多谢各位,原来是Delphi5,ADO中的BUG^_^