Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请问监听数据库数据变化?

zhiguoxian  发表于:2012-02-12 10:47:44  
复制

我用Access开发了一个程序,多台客户端PC共同访问一个共享的数据库文件。现在希望当一台客户端PC更改了数据库之后,其他台客户端PC可以监听到数据更新事件,并作出相应的处理。

请问除了用Timer周期性地读取数据记录以外,有其他更好,更高效的方法吗?

谢谢!

 

Top
零智 发表于:2012-02-12 16:52:39
ACCESS自身并没有主动刷新数据的功能,其它控件就不清楚了,要想刷新数据更新的状态在ACCESS中只能是用Timer来启被动刷新数据了。

萧云 发表于:2012-02-13 15:12:41

现有的条件下,如果要实现提高效率,那么可以考虑建立更新日志,也就是说哪个数据表被更新了,客户端就刷新被更新的那个表。

这样的好处是只对有变动的表进行操作,从而减少了刷新的次数,避免了所有的表都去刷新。

 

这个方案只是对数据库中存在大量的数据表是才有效,如果你的数据库中只有那个四五个表,那么有点小题大做了。



萧云 发表于:2012-02-13 15:27:23

具体做法,就是用Timer定时对日志表进行监视。

日志要分服务器端日志和客户端日志,服务器日志要由客户端引发。

客户端日志要体现出对服务器端日志记录的结果必须做出回应,每行记录都要有反馈。

 

反馈的内容就是“是否对服务器端指示的某表在某一时刻更新后数据,进行读取与刷新”。

不论是否执行了刷新,都必须在客户端的日志中做好记录。 不能放过任何一条。

 

这样一来,你只要监视一个服务器端的日志表就可以了。剩下就是针对服务器日志表的新记录展开动作。



赵文斌 发表于:2012-02-14 10:00:46

好像没有这个必要吧。随时去知道数据库变化,特别是多用户的。需要调取数据执行会自动取最新数据的。不需要查阅的时候管它有没有变化



zhiguoxian 发表于:2012-12-07 15:15:17
目前我想到并且在我开发的程序中使用的办法是:
1. 建立一个“tabDataModifyHistory”表,每个用户更改数据,都会在该表增加一条记录(用于提供历史数据历史更改查询功能)。
2. 在Timer中通过以下语句获取记录数,并与之前保留的记录数比较,判断是否有更改数据。
strSql = "select count(*) from tabDataModifyHistory"


总记录:5篇  页次:1/1 9 1 :