我用dbgrid连接了adotable进行显示数据表内容,然后用adoquery找到要修改的数据进行修改后,如何让dbgrid刷新、显示新的数据,我用dbgrid.refresh无效,用adotable.refresh就报错,用adotable.close、adotable.open也没用,用adotable.avite:=false、adotable.avite:=true也没用,只能推出程序再运行才能显示修改过的数据。谁能告诉我怎么做?

解决方案 »

  1.   

    用dbgrid连adoquery就可以了,为什么连adotable。
    你换一下试试
      

  2.   

    不行呀,哪样改动太多了,而且我的程序里有好几个dbgrid跟adotable
      

  3.   

    都使用TAdoQuery,
    AdoQuery2.requery就可以刷新了
      

  4.   

    各位老兄,我的它们是处于不同子窗口的,但都操作同一个数据表,对adoquery进行post之后,它应该已经写到数据表里了,那该如何更新adotable的数据呢?
    正常来说,用adotable.refresh应该可以了,但它为什么总报错?
    用adotable.close、adotable.open为什么也没用呢?已经重新连接了,本来应该刷新了数据才对呀?
      

  5.   

    你可以增加一个刷新的按钮, 用以下代码就行了, 我以前也碰到这个问题.我是用adodataset
      var
       sqlstr:string;
    begin   sqlstr:='select * from student';
       adodataset1.Close ;
       adodataset1.CommandText :=sqlstr;
       adodataset1.Open ;
    这样就行了,用adoquery应该差不多
      

  6.   

    为什么用ado不用bde?用bde就没这个问题。
      

  7.   

    把adoquery adotable等放到dm上
      

  8.   

    修改之前先关掉adotable.close、
    修改完之后再adotable.open
      

  9.   

    要是
    你的dbgrid要显示的是adoquery的内容,所以dbgrid使用的是adoquery。
    不过使用adoquery时要 adoquery.close; adoquery.sql.clear; ……; adoquery.open;
      

  10.   

    你是不是沒有執行Updateapplay
      

  11.   

    修改过程:
    adoquery.Edit;
    修改...
    adoquery.Post;
    adoquery.close;
    adoquery.Open;
    应该能解决你的问题!
      

  12.   

    各位大哥,dbgrid显示的是adotable的内容而不是adoquery的内容
      

  13.   

    在ADOQuery的AfterRefresh事件中写入
    var
      x:String
    begin
      x:=ADOTable.Tablename;
      ATOTable.Tablename:=''
      ADOTable.Tablename:=x;
      ADOTAble.Active:=True;
    end;
    试试看
      

  14.   

    用Close然后Open应该不会错!你说会报错把你的错误信息贴出来看看!是不是ADO的BUG!
    另外用Requery也是可以的!
      

  15.   

    我已经知道问题的所在了,原因是adoquery.Post之后就马上执行adotable.refresh了,而这时候数据还没post完毕,难怪刷不到新数据,要等上个五秒钟才行,这个又如何写呢?