有没有好的办法解决这样的问题?(数据集同步更新显示的问题) (50分)

B

baifeng

Unregistered / Unconfirmed
GUEST, unregistred user!
有没有好的办法解决这样的问题?(数据集同步更新显示的问题)

后台是,ms sql server 或 mysql。
多个用户在客户端程序打开同一个数据集(用adoquery,查询出的记录基本一致),
A用户更改了其中某一条记录值后,其他用户的dbgrid中的数据也要更新。




 
同步只是相对的,
客户端定时刷新就可以了
 
同步只是相对的,
客户端定时刷新就可以了
 
不知道你的是程序是两层的,还是多层的
 
to zhaomh,二层
 
需要客户端主动更新,服务器端很难主动更新
 
只要客户端定时更新就可以了
 
我最近問過這個問題,沒有好的建議,還掛在那
我個人的考慮是,客戶端自動更新,假如做成定時方式,其實還是被動的,不管實際上數據
有沒有變化.碰上要更新的表數據量龐大的話,浪費的網羅資源是不值得的
專業的做法,看來是由服務器端發送消息到所有的錢台,不過這個程序涉及的技術可能難點

我覺得不如在後台的Update觸發器裡面寫一段代碼,將最後更新該表的時間保存在某個表,
錢台空閒的時候先讀這個表,跟上次讀到的時間比較,假如不一樣,證明需要刷新數據
 
设置ado的游标,设成server型,就可解决问题
 
可以在对数据进行操作之前进行数据判断是否有改变过,如果有改变过就给出提示或强制刷新!
例如:在改变数据后记录下改变的时间,另一台客户端对这条数据进行操作
之前先比较一下本地时间跟数据库的时间是否一样,就可以实现了!
 
用Refresh不行
 
to mrzj:
對於游標設成server 端,在用於dbgrid或者dblookupcombo等需要一次查看多條紀錄的
控件是行不通的
to yqwang:
是用requery,或者使用resync
 
use the DCOM event to push the change to client side
 
简单点的话就用shiny兄的办法,和我的思路基本一样
目前刚做完一个系统,远程客户端定时开一个新进程用于同步服务器数据,最长延时约10秒
 
設置ADO的CURSOR為DYNAMIC CURSOR
不過這樣執行效率不好.
 
顶部