C/S难题,救命啊 (10分)

  • 主题发起人 zhoufujin
  • 开始时间
Z

zhoufujin

Unregistered / Unconfirmed
GUEST, unregistred user!
一个用户改变了一个表的纪录,
另一个用户此时如果不刷新此表,它将看不到已经更改的纪录内容
对该表操作会失误。(如果不时刻刷新,用导航器查看不同纪录时将看不到已经被
其它用户更改的内容)问题是如何时刻刷新此表?
 
当一个用户更新了一个表后,此时就应该提交到后端数据库,那么另外的用户就自然看到了
已经被其它用户更改的内容了。
 
老弟:
我用TQuery.SQL进行Update这个表,然后TIBTransaction.commit;
而且TIBTransaction.AutoStopAction=saCommit;
你说Update没有将已经更新的数据提交到后端数据库吗?
如果甲用户更新完这个表乙用户再打开这个表
看定能看到甲用户已经更新的信息,问题是甲乙用户都
已经打开了这个表,一方更新了信息另一方就看不到了。
怎么办?各位大虾?
 
鸵鸟策略!
 
那能怎么办,只能在客户端刷新了!在ASP里面有参数
来指定遇到这种情况时怎么处理,这个我就不知道了~
因为这个我是菜鸟!
 
呼喊高手帮忙,可以再加分。
 
这个东西只有一个办法,对要修改的记录进行加锁(用排它锁),当一个用户在修改时,
别的用户不能读和写。
 
我的意思是两个用户同时打开了一个表都是先浏览,而后一个用户改了这个表
另一个用户怎么知道表被改了?如果知道被改了了就刷新,如果
没改就没有必要刷新。读还是应该让别人读的。
 
用TDataSetProvider控件,当一个用户改了这个表,就可以在它里面的事件(具体哪个事件就不清楚了),写一些代码,传客户端进行更新,

就可以解决你的问题
 
哪有TDataSetProvider?
给我出点具体的主意?求大家了
 
用定时器定时刷新!
但会对效率影响极大:(
 
用定时器刷新是不是太笨了?
 
我的看法:
每个事务有4个级别的控制,根据业务需要选
实时的刷新是不可能的。

另外建议以后问题题目写出主要问题即可,别老点名。
千中元
 
对不起斑竹,下次不敢了。
祝斑竹新年快乐。
 
关注:
如果用BDE的TUpdateSQL来更新有唯一栏位的表还比较好办,如果是ADO就不知如何处理了,
请各位高手想想办法,同时微软公司(ADO)和波兰公司的开发人员没有遇上这样的问题吗?这样
的更新机制是否出现问题呢?他们是如何解决这些问题的呢?
 
在c/s两层中几乎只有定时刷新了..
如果你的CLIENT是通过中间层连接数据库的话,
就可以在中间层中进行控制,如果检测到表的更新,
就自动刷新连接链路。
 
这个问题本来就是一个难题!
我在作超市管理系统的时候,
就有这样一个问题:连锁点相配送中心要货。
就是先查找某种商品的库存数量,
但是当他查出来了,还没又要货物而起他人又要了同一种货物,
问题就是这样的。

解决方法:
要达到另一个人要了货,而这边自动刷新,就只有要了货得人向
整个网络发消息,这样实在是不妥!

所以就让每个人在要货确认的时候在刷一次。
就得到最新的记录了,如果库存小于要货人的要货量,就提醒他就行了!
然后回滚这个事务。


 
你可以用tserversocket和tclientsocket
两层和三曾都可以实现。你使用一下里面的onconnection和onaccept事件。
我的个人想法!
当两个客户同时连接,一个客户修改了数据,触发服务器,服务器就触发另一个客户,或这个客户直接触发另一个客户更新。
我的能力只能想到这样了。如果以后有更好的,请告诉我。
 
我听说数据库有一种事务控制的机制,要用一个队列来处理。 也就是LOCK和UNLOCK。仅是
听说,没试过,我很想学习两层、多层应用。关注!
 
顶部