1在多用户同时操作的情况如何控制信息.
如某单据选择调用另外一张单据,被选择单据有个状态是否被其他单据选用,选用之后立即关闭.
如两个客户端同时选用了同一张单据.在程序中如何控制,才不致使脏读.
还有其他如单据号码更新的问题等等.
请大家提提自己的想法?
如某单据选择调用另外一张单据,被选择单据有个状态是否被其他单据选用,选用之后立即关闭.
如两个客户端同时选用了同一张单据.在程序中如何控制,才不致使脏读.
还有其他如单据号码更新的问题等等.
请大家提提自己的想法?
解决方案 »
- SSTree控件怎樣設成只讀?
- 水晶报表设计数据源出错
- 请问如何在屏幕上进行指定颜色的快速查找
- 千分尽还复来!我要散1000分!见者有份.祝各位新年快乐!万事如意!(CJH)
- 哪有MSDN中文版下载,最新的能不能兼容以前的VB6.0?
- VB开发的软件,含数据库,但是不允许安装,直接在光盘运行!
- 怎样做连接数据库的全局变量?
- 关于控制计算机开关机的讨论
- 串口中RThresHold和OnComm事件做的几个小实验带来的问题。
- 有没有打开pdf的控件?
- 用Vb怎么开发下载和上传ftp文件(在线等)
- VB编译成.exe文件时总提示:“该部件的许可信息没有找到。在设计环境中没有合适的许可证使用该功能”,无法编译成.exe文件
adLockPessimistic
如果设置为此类锁定,你可以用悲观锁定制式编辑记录,这就是说,记录被锁定,且只有在编辑开始到将记录更新的提交给数据提供者这段时间内进行编辑的用户才可以访问 不知道你的单据号码更新业务规则是什么。 不好说
单据号码是在保存后更新怎样处理比较好,锁定的话也不是一个办法。可以在保存时自动更改单据的号码,不知道大家还有什么好的方法。在线等候
dim lUpdate as longcnn.Exec "UPDATE 单据 SET 选用标志 = 1 WHERE 单据号='...' AND 选用标志 = 0",lUpdate, adCmdTextIf lUpdate = 1 Then
选用成功
Else 'lUpdate = 0
已经被他人选用
End If
一般情况下,不回出现楼主所说的问题
如果是比较低级的数据库,比如vfp数据库,它提供锁记录方式
在很多情况下都可以解决并发的问题
对于单据的编号也可能采取同样的方法,也有另外一种就是自动把单据号码改掉,另外一种是手工。如果单据号码不允许修改的话,采用自动把单据改掉的方法比较好,这样不致于单据白录。对于选单的话是不是已经被其他单据选用时,不能被另外单据选用好一点,请大家谈谈看看。
在线等候
rs.open "Select * from TableName with(RowLock, UpdLock, ReadPast) where id=xxx"
if not rs.eof then
沒人Lock住
else
有人Lock住
endifset rs=nothing即可Unlock記錄
>Tiger_Zhao(TigerZhao(VB老鸟)) 用你的办法,可以控制多个用户同时读一张单据。也解决了数据并发的问题。在多行的情况下,返回会怎样。如果你的多行记录之间是松散的关系,那就分别一条条保存,在界面上将保存不成功的行标记出来。
如果记录之间有关联,可以用事务(Connection.BeginTrans),只要有一条不成功就回滚(Connection.Rollback)>对于单据的编号也可能采取同样的方法,也有另外一种就是自动把单据号码改掉,另外一种是手工。如果单据号码不允许修改的话,采用自动把单据改掉的方法比较好,这样不致于单据白录。归根到底是业务的问题。我不认为会存在单据白录的问题。
如果用户是按照实物单据进行录入,就不可能发生两个客户端同时录入相同有单据号的单据。如果用户喜欢在两台机器上做变态的操作,我们也只要用简单的覆盖方式就可以了。
如果单据号完全由程序自动生成,那么在两个客户端输入的单据完全是不同的数据,毫无关联。