DBGrid自动更新数据问题。
我使用TAdoQuery查询数据库中一张表的所有记录,
再用DBGrid通过TDataSoure与该AdoQuery对象连接进行记录显示。
现在我希望在数据库中这张表发生变动时,DBGrid能自动进行更新内容。
我试过一些改属性的办法,但没有成功。
请教。
问题点数:20、回复次数:13Top
1 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2002-05-16 13:42:17 得分 0
那你可以用TADOTable,那样就行了Top
2 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2002-05-16 13:49:01 得分 5
如果你用TADOQuery的Refresh的话,可以更新一部分,为什么说是一部分呢,它只更新已有的记录,如修改、删除之类,好象不能更新刚输入的记录。
如果有什么办法的话,不防告诉一声,在此谢了!Top
3 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2002-05-16 13:53:09 得分 5
虽然用ADOQuery.Refresh可以更新一部分数据,但并不能更新刚输入的数据,只能是Delete掉的或被Update掉的。Top
4 楼Black(小熊)回复于 2002-05-16 13:54:49 得分 0
如果一定要使用AdoQuery
可以在form的Onactivate事件中加入
AdoQuery1.active:=false;
AdoQuery1.open;或AdoQuery1.execsql;
这样每当form重新显示,DBGrid能自动进行更新内容,因为执行了AdoQuery
DBGrid的datasource发生了变化Top
5 楼luoshumeng(乡村意外)回复于 2002-05-16 13:56:14 得分 0
写一个过程
queryado.close;
qeuryado.sql.clear;
queryado.sql.add('select .....')//显示在DBGRID里面的东西
queryado.sql.open;
修改后或增加后就执行这一个就得了,可能有点笨但先解决这个问题再说吧!Top
6 楼qianying(千影)回复于 2002-05-16 13:56:21 得分 0
刚试过TAdoDataSet,也不行。
使用TAdoTable需要做什么额外设置吗?Top
7 楼qianying(千影)回复于 2002-05-16 14:14:56 得分 0
其实我就是想做一个监控程序,监视数据库的变化,
程序本身并不修改数据库的内容。
而我的FORM在第一次打开后就不动了,其上的DBGRID映射数据库中的变化。
拜托了,谢谢。Top
8 楼luoshumeng(乡村意外)回复于 2002-05-16 14:18:12 得分 0
DBGrid的DataSet可以是ADOQUERY呀,你在临控时只要控我说的那样是可以做到更新的,我们原先也是这样做的呀!!!Top
9 楼chinaway(溪之)回复于 2002-05-16 14:21:05 得分 0
表中的数据变动后,需要对表格重新进行一次刷新,即close 后open.Top
10 楼hydonlee(青山情)回复于 2002-05-16 14:27:00 得分 10
dbgrid可没有那么聪明, 当然你可以自己来定时刷新, 比如 : 5分钟一次.
================================================================
土人, 我的女友这样叫我
大强, 我的同事这样叫我
人渣, 我的同学这样叫我
...
Delphi, 我的最爱......Top
11 楼Black(小熊)回复于 2002-05-16 14:29:18 得分 0
我的意思是当你的数据发生变化,可以调用self.OnActivate(self);
这样form不用关闭,就可以实现你的要求。
当然,这只是一种方法Top
12 楼qianying(千影)回复于 2002-05-16 15:27:04 得分 0
to luoshumeng(乡村意外):
你所说的写一个过程:
queryado.close;
qeuryado.sql.clear;
queryado.sql.add('select .....')//显示在DBGRID里面的东西
queryado.sql.open;
修改后或增加后就执行这一个就得了,但是我怎么获取数据库被改动的消息啊?毕竟我的程序并不对数据库进行更新。数据库的更新是由别第三方的程序施行的。
Top
13 楼keyhappy(绝对在乎你)回复于 2002-05-17 13:03:52 得分 0
我认为luoshumeng(乡村意外)的意思是
queryado.close;
qeuryado.sql.clear;
queryado.sql.add('select .....')//显示在DBGRID里面的东西
queryado.sql.open;
用在要更新查询的结果时用,而不是去更新数据库本身
Top




