多线程插入access数据库,dbgrid不能即时更新!我在线程中动态创建 adoconnection和adotable,,来在线程中插入数据。然后主程序界面放置adotable来连接 线程插入数据库的表,,用datasource连接dbgrid,,用dbgrid来显示数据库中的数据,
但是 dbgrid不能即时更新显示插入的数据,,怎么办??我用单线程 程序,这样做就没有问题,,问什么多线程就不行?大家来讨论一下!!

解决方案 »

  1.   

    你在你的其他线程操作的数据库,在你的主线程里,ADOTable如何会知道他的目标数据库有做了改动?
    数据库本身不会通知它,而ADOTable也没用不停的去刷新的机制。他们的数据都是分别存在各自不同的内存里的。
    而在同一个DataSet里,因为你操作的是同一个对象,TDataSet会负责通知它关联的DataSet,好像从源码看是
    TDataSet.DataEvent这个虚函数来完成的。所以你必须自己去完成刷新。
      

  2.   

    //我在线程中动态创建 adoconnection和adotable,,来在线程中插入数据。 //***不要这样!!
    在线程中只创建ADOTable其ADOConnection,再创建线程时传进来,并把ADOTable.CursorLocation:=clUseServer
    然后主程序界面放置adotable来连接 //***这里的ADOTable.CursorLocation属性也设为clUseServer
    线程插入数据库的表,用datasource连接dbgrid,,用dbgrid来显示数据库中的数据, 
    但是 dbgrid不能即时更新显示插入的数据,,怎么办?? 我用单线程 程序,这样做就没有问题,,问什么多线程就不行?