只要重新CLOSE,OPEN一次就可以了。

解决方案 »

  1.   

    outer2000(天外流星) 说得没错
      

  2.   

    兄弟们,我也用了CLOSE与OPEN,但是不行呀!下面是我的具体代码(当然我已把我的问题简化了),大家可以亲手做一下。具体说明见问题开头的说明。多谢各位了。(adoquery1与adoquery2都连住同一个数据库)procedure TForm1.ButtonshowClick(Sender: TObject);//查找显示所有记录的过程
    begin
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.sql.add('select * from 信息表');
      adoquery1.Open;
    end;procedure TForm1.ButtondeleteClick(Sender: TObject);//删除记录的过程
    begin
      adoquery2.Close;
      adoquery2.SQL.Clear;
      adoquery2.SQL.Add('delete from 信息表 where 用户姓名="' +   adoquery1.fieldbyname('用户姓名').AsString + '"');
      
      adoquery2.ExecSQL;
     
      Buttonshow.Click;  //用ADOQUERY2删掉记录后调用Buttonshow.Click,试图重新显示删掉记录后的所有数据,但结果得到的还是未删掉记录前的结果,必须手工再按Buttonshow  dbgrid1.Refresh;end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      adoquery1.Delete;
     
    {在这里真接用adoquery1对选取的记录进行删除,dbgrid1内容马上就刷新成删掉记录的样子,这里没问题。问题就在用adoquery2去删掉记录。}
    end;
      

  3.   

    这不是ado的问题,是你的问题,你用bde这样做还不是一样的效果
      

  4.   

    adoquery1和adoquery2是两个数据集,你刷新adoquery1,adoquery2怎么会变呢?看看你的CursorLocation和CursorType属性吧,他们分为:服务器端,客户端,动态和静态等,李维的书上讲得很清楚
      

  5.   

    adoquery1.Refresh;
    你试一下(如果你选的包括主键的话)
      

  6.   


      Buttonshow.Click;
    改成
      ButtonshowClick(nil);
    试试