本人接了个单是工厂的生产管理软件,多用户的。准备采用VB+ADO+SQLserver 2000+vsFlexGrid 8 编写,因为是多用户,所以小弟现在有下面的问题:如何保证数据的完整性,例如,当一个用户打开了一个出库单后(一个出库单是由几条或上百条记录组成)。其他用户还能对这个出库单进行打开、修改或删除。要是对打开的记录进锁定,是怎么样锁定?如何解锁呢?用存储过程应也出现上面的问题吧!请说详细点。我一直是做单机版的,没有用过存储过程,没有做过上面提到的记录锁定等,返回记录也是在VB里直接用SQL语句进行操作。请帮小弟一个忙好吗?QQ:4872423 Email:[email protected]

解决方案 »

  1.   

    楼主,强烈建议你采用Magic eDeveloper开发,Magic eDeveloper一个真正意义上的快速开发工具,所有关于数据库的操作(加锁、事务处理、SQL语句等等)都不是你考虑的事情,你做的事情就是如何考虑把用户的需求实现的更好,让用户更好的信任你。而且它的开发速度相信是VB等工具的一倍以上。详细参见www.magic-sw.com.cn
      

  2.   

    SQL SERVER默认是行级锁定,我没太注意过锁的问题,担心要是使用不好的话出现阻塞、死锁的情况很麻烦,打开查询是没问题的,针对其他用户修改或删除,我采用了一个很笨的做法,另建一个表,当一个用户查询出一条要修改或删除的记录时先判断该表中有没有这条记录的关键字,没有的话将该记录的关键字段存入该表再进行操作,操作完成后再将该记录删除,不过这个办法对多记录删除不实用。关注
      

  3.   

    我也是在做生产管理软件:)
    如果考虑同一条数据被同时修改的问题可以考虑在该表加一个int型字段,每次读书据取得该字段,每次保存前比较一下,如果表中实际数据已经大于所取的的就表示已经被别人修改!如果没有那就保存后加一。
    存储过程中只要用了事务就没关系,在事务执行过程中所涉及的表是被锁定的,只有执行完毕才可以添加或修改数据,不过这个执行过程一般很快!
      

  4.   

    1.数据存取要用事务处理。
    2.更改记录集属性。
    3.其实SQLSERVER是自动锁表的,根本不用语句写。多用户读写不会有问题,我做过不少C/S结构的系统,用SQLSERVER 自己的多用户处理机制就很好。