现在做一个进销存软件,在出库操作的时候,如果避免两个用户同时调用库存里面的记录,举个例子:库存2个hub,用户甲看到了,调出库2个,用户乙在同一时间刚好也看到,也需要调2个,这样实际就调出4个,而库存只有2个,有办法达到,用户甲看到的时候,不让用户乙看到,等甲调完了,再让乙看吗?
或者锁定整个表,一个用户访问,另外的用户就不可以访问!

解决方案 »

  1.   

    告诉你一个思路(我就是这样实现的):
    设库存的字段为fStockNum,再增加一个字段fStockNum_Tmp,用于存放临时库存,即两个用户都没有出库时fStockNum与fStockNum_Tmp的数量是一样的,都为2;当用户1先做这个商品的出库时(出库单没有保存),先将fStockNum_Tmp的数量减少,并不减少fStockNum的数量,这时用户2也去做这个商品的出库时先读取fStockNum_Tmp的数量,发现数量不够就不让出库。如果用户1做了“保存”操作,则将fStockNum的数量减少,如果用户1做了“放弃”操作,则将fStockNum_Tmp的数量增加,用于别的用户可以做这个商品的出库操作.这只是一个思路,具体实现时还要考虑很多细节问题。
      

  2.   

    一、用ADO动态方式显示。
    二、每次出库操作的时候检查数据库里的实际数据。
      

  3.   

    我是这样实现的。新建一个单独的表,有两个字段,其中一个字段是表名,另一个字段是逻辑字段,当一个用户打开一个表时,就搜索相应的表名,同时set对应逻辑字段为True,关闭表是将逻辑字段设为False.每次打开表时,写一个过程,先检查表标志是否为True,否则执行前面的操作,是则提示用户稍后操作。
      

  4.   

    每次出库操作的时候检查数据库里的实际数据。
     我觉得不能用锁, 难道你在看hub的时候就不允许别的人看路由器了嘛????? 太不科学了吧!