ADO 数据库应用问题
楼主好!问题是这样的,
我在form1里添加了一个ADOTable1、一个ADOQuery1、一个DataSource1和一个DBGrid。
数据库是Access的mdb数据库,数据库有两个表(账单表、账单明细表)和一个查询(根据两个表连接得来)query1。
设置ADOTable1的table name属性为查询query1.
设置DataSource1的DataSet属性为ADOTable1;
DBGrid的datasource属性设为DataSource1
ADOQuery1的sql语句为在账单明细表里添加一记录。
问题是我通过ADOQuery1往账单明细表里添加记录后运行ADOTable1->ReQuery();,DBGrid并不显示新记录。
用ADOTable1->Active=false;ADOTable1->Active=true;替换ADOTable1->ReQuery();也不行。
但是我另外加了一个TButton1,利用TButton1去运行ADOTable1->ReQuery();DBGrid却可以显示新记录。
后来我又做了一个测试,我通过ADOQuery1往账单明细表里添加记录后,马上点TButton1(时间控制在1-2秒内)刷新记录,结果是DBGrid没有显示新记录。
哪位高手给解释下什么原因?或有什么解决办法?
感激不尽!!!!!!
[解决办法]
你需要使用一个ADOConnection控件,ADOQuery和ADOTable通过它来和数据库连接,否则的话会有延迟,除非同一个控件实现刷新,比如:
ADOTable1->Insert();
和
ADOTable1->Append();
插入的数据就不需要刷新了
[解决办法]
解决这一问题蜷在ADOConnection控件上了,用它可以避免所有延迟不管如何用ADOTable还是ADOQuery都不会有延迟,并且避免了这些控件逐个设置数据库连接的麻烦