我用delphi做了一个程序,程序有几个窗体,当我单击其中一个窗体的button时实现了向数据库添加数据,但是其余也使用dbgrid显示数据库表的地方没有做出相应变化,不知有没有其它方法可以实现所有窗体实现数据同步更新?

解决方案 »

  1.   

    dbgrid显示数据库表,使用的是已经读到客户端的记录集
    一个窗体的button向数据库添加数据,已经读到客户端的记录集 不会知道它们有新记录的,应该button事件加完记录通知 客户端的记录集 需要更新了
      

  2.   


    其实,不需要同时重新读取数据。 楼主,你可以这样做: 如果单击Button时添加数据,是用adoquery1.append;
    adoquery1['字段1']:=...;
    adoquery1['字段2']:=...;
    ........................
    ........................
    adoquery1.post;的方式来实现的,那么只要让显示数据的dbgrid也使用这个adoquery1就可以同步显示所添加的数据。但如果你是通过执行 insert-sql 命令直接将数据添加到后台数据库的,那么只能重新到数据库中读取数据。具体方法是:
    adoquery2.close;
    adoquery2.open;其中,adoquery2是为dbgrid提供数据的数据集。
      

  3.   

    dbgrid连接的dataset重新打开
    或者添加记录用的dataset是使用dbgrid连接的那个
      

  4.   

    发现个问题,当其它的窗体也通过adoquery控件更新数据之后,每个窗体添加记录方式须一样,否则会出错!
      

  5.   

    你的DBGRID里的数据是怎么读出来的就让它在BUTTON插入数据以后再读一下。