那你可以用TADOTable,那样就行了

解决方案 »

  1.   

    如果你用TADOQuery的Refresh的话,可以更新一部分,为什么说是一部分呢,它只更新已有的记录,如修改、删除之类,好象不能更新刚输入的记录。
    如果有什么办法的话,不防告诉一声,在此谢了!
      

  2.   

    虽然用ADOQuery.Refresh可以更新一部分数据,但并不能更新刚输入的数据,只能是Delete掉的或被Update掉的。
      

  3.   

    如果一定要使用AdoQuery
    可以在form的Onactivate事件中加入
    AdoQuery1.active:=false;
    AdoQuery1.open;或AdoQuery1.execsql;
    这样每当form重新显示,DBGrid能自动进行更新内容,因为执行了AdoQuery
    DBGrid的datasource发生了变化
      

  4.   

    写一个过程
    queryado.close;
    qeuryado.sql.clear;
    queryado.sql.add('select .....')//显示在DBGRID里面的东西
    queryado.sql.open;
    修改后或增加后就执行这一个就得了,可能有点笨但先解决这个问题再说吧!
      

  5.   

    刚试过TAdoDataSet,也不行。使用TAdoTable需要做什么额外设置吗?
      

  6.   

    其实我就是想做一个监控程序,监视数据库的变化,
    程序本身并不修改数据库的内容。
    而我的FORM在第一次打开后就不动了,其上的DBGRID映射数据库中的变化。拜托了,谢谢。
      

  7.   

    DBGrid的DataSet可以是ADOQUERY呀,你在临控时只要控我说的那样是可以做到更新的,我们原先也是这样做的呀!!!
      

  8.   

    表中的数据变动后,需要对表格重新进行一次刷新,即close 后open.
      

  9.   

    dbgrid可没有那么聪明, 当然你可以自己来定时刷新, 比如 : 5分钟一次.
    ================================================================土人, 我的女友这样叫我
    大强, 我的同事这样叫我
    人渣, 我的同学这样叫我...
    Delphi, 我的最爱......
      

  10.   

    我的意思是当你的数据发生变化,可以调用self.OnActivate(self);
    这样form不用关闭,就可以实现你的要求。
    当然,这只是一种方法
      

  11.   

    to luoshumeng(乡村意外):你所说的写一个过程:
    queryado.close;
    qeuryado.sql.clear;
    queryado.sql.add('select .....')//显示在DBGRID里面的东西
    queryado.sql.open;
    修改后或增加后就执行这一个就得了,但是我怎么获取数据库被改动的消息啊?毕竟我的程序并不对数据库进行更新。数据库的更新是由别第三方的程序施行的。
      

  12.   

    我认为luoshumeng(乡村意外)的意思是
    queryado.close;
    qeuryado.sql.clear;
    queryado.sql.add('select .....')//显示在DBGRID里面的东西
    queryado.sql.open;
    用在要更新查询的结果时用,而不是去更新数据库本身