设置LOCK的类型即可 在VB中实现吧
DIM DATA1 AS RECOARDSET
SET DATA1=NEW RECOARDSET
WITH DATA1
.OPEN(........
.LOCKTYPE=..... //一共有四种值 记不清了
这样就可以了
DIM DATA1 AS RECOARDSET
SET DATA1=NEW RECOARDSET
WITH DATA1
.OPEN(........
.LOCKTYPE=..... //一共有四种值 记不清了
这样就可以了
解决方案 »
- 出差北京,可能要春节前夕才能回来!!
- 一个简单的数据操作实例请教各位高手,不胜感谢!
- 这么一个小问题问了半天了————在线等! 马上结贴!
- 请问高手,如何实现一个透明窗体的同时,该窗体还能获取在窗体区域内的Mouse点击或Move事件?
- 怎样修改文件
- 各位大侠再不救我,我可要死翘翘了~~~~~
- ZYL910 Come in!
- headache
- 如何才能改变TreeView控件的背景颜色?
- vb.net中对exel用查询语句查询时,是不是只识别 "select * from [Sheet1$]" 这一条语句啊?
- 如何用Winsock提http请求,并得到HTML代码?
- 回复:superlight,你的对象COPY问题,因为我不能跟三个以上的贴。
但我说的不是这个意思
你说的是recordset打开的时候如何确定了访问类型
我想问的是:
例:
用户A打开单据001在修改
那么,用户B想要打开单据001修改时,就应该得到一条信息,告知用户A在修改单据,不能同时修改,同时,sqlserver也阻止其他用于修改相应的记录。
在用友里采取了循环检测的方法,客户端不断的刷新服务器端的数据库,五分钟内不能刷新数据,服务器端的应用程序就认为连接中断,需要手工在服务器上清除异常连接,
也就是说,当某一个工作站在执行程序时死机,那么至少需要等待5分钟,然后在服务器端用管理员密码登陆后才能清除锁定,然后继续执行同样的任务,
然而,往往问题还在,经常又碰到同样的问题死机,然后再等5分钟,其操作过程真是异常痛苦!
而且,这种方法,必须要求应用程序时3层结构,普通的C/S结构是无法做到的,
这种方法也在Sql端也不是强制性的数据保护,需要应用程序来实现其逻辑,可靠性也不是很高。
(锁定模式)。但是cursorlocation=aduseserver 时recordset的很多方法又用不了。哪位老大给俺讲一下cursorlocation等于aduseserver时recordset的用法???
能否再深入探讨一下?你指的共享锁是sqlserver里的吗?
我想知道,在vb中如何利用sqlserver的锁定功能,最好有源码,
盼复!!
它具体的见解了锁定数据的方法及各项开发的事项
你去书店找一下!
我的Email:[email protected]
书我去找,可否告知出版社及作者?
但是还是希望你能给点提示,
大家用vb都不是一天两天了,高手点一下,可能胜过看一个星期的书
希望大家继续讨论,今天又得了点专家分,我再加分,能加多少加多少!
所以用有的方法是解决的一种.
还有一种,就是再加一个字段,表示用户.
在SELECT时insert人进去,改好后撤消
Update: adLockPessimistic
记录有效性:
使用字段有效性规则限定。
并使用事务。表锁定,
只有在系统使用。
通常不可使用!我个人应您要求仅作以上回答。
实际就是这样处理的,
这样,我举个实际的例子:
比如我在做库存系统时,产品入库单需要选择生产包装模块的已包装桶数据,
每个桶纪录有一个字段标示是否入库
假如我是单用户,那不会有问题,
但是加入用户A打开产品入库单,正在操作,尚未存盘时,用户B也打开了产品入库单,这时我希望用户B得到一个消息,告知已有用户在操作产品入库单,让他等一会儿再操作,否则的话可能会造成同一桶号重复入库。
当然,我可以在桶号表里加一字段,标识是否有用户在编辑,但sqlserver本身有记录、表锁定功能,这样做似乎有点浪费,而且浪费资源,而且假如说用户A没有锁定了纪录后没有正常退出的话怎么办?如何释放记录?希望大家继续讨论,我再加分
大家有什么好的建议,或者能够推荐一些高手,,我去请,我也给分。看看今天最多能加几分,我再加分!
server a, client b,client c
b 在处理时不断刷新 a 中一个锁记录,写下属于 b 的时间纪录(假定1分钟一次)
b 若非法退出,再启动时自己可以简单的判断出 前b是否存在,并决定是否可以修改产品入库单。
c 发现有b在处理,且时间间隔小于1分钟,则不能处理,否则刷新 a 中锁记录,写下属于 c 的时间纪录(假定1分钟一次)
自己写代码处理好累啊,希望有人提出简单方便的办法。
在锁定的记录上进行操作ado是有返回信息的,ms还没有懒到这种程度不提供这些信息!
在msdn中有的!
一个例子:
目前做的一个项目中,包装线用桶来装线卷,桶有一个状态标志,
其中:2:表示尚未封口,3:表示已经封口,4:表示已经入库,
逻辑关系中:
状态2:桶数据可以调整(加入、取出线卷、封桶),
状态3:必须有相应的开桶处理后状态回到2,入库处理状态置为4
状态4:数据不得修改。当我要进行入库处理时,需要挑选符合条件的桶 select 桶号,净重,毛重.... where 状态 = 3
入库处理过程中,会把选中的桶号状态置为4,入库单保存时将桶号数据存入数据库。可是编辑一张入库单可能很长时间,这期间,假如生产线更改桶数据,要做开桶处理,或者其他站点的使用者也调用入库功能,如果不加处理的话,数据就出错了(生产线更改了桶数据,但是库存取的却是更改以前的数据,或者入库存盘时状态置为4,生产线存盘时又改为2,或者同一桶号重复入库....)类似的情况还很多,目前我用临时表来控制记录锁定,这样非常麻烦,而且效率低,容易出错(上面都讨论过),既然SqlServer提供了锁定的功能,不知能否在vb中用起来。泰山还望指点迷津!
办法来控制操作好。我所写的所有涉及到大用户量操作的系统中,都通过状态标志来记录当前编辑用户。至于清除无效状态(用户死机,或非法退出后,应清除其对应的编辑标志),我的
办法是在服务器上放了一个定时执行的JOB(SQLSERVER支持每分钟执行),执行一
个存储过程来清除无效标志。这个存储过程也很简单,通过sp_who取得当前仍然在线的用户,然后与所有需要控制
编辑的表中记录比较,清除不匹配的,就完了。执行效率很高。