QKY(Study)

博客园 首页 新随笔 联系 订阅 管理

入库单的掉捆或者引起库存明细的混乱,经过分析认为是并发引起的,怎么来解决这个并发问题!
当然,整个处理事务包在一个ND事务里是开始写程序时就设计好了,审核入库单包括以下几件事情要处理:1.更新来源单据,2.更新当前单据,3.更新库存明细.....这几个任务都在审核入库单一个ND事务之内.经过测试,数据准确并且完成,但是到了上线运行一段时间后,数据便出现了异常,其中有几种异常现象:1.入库单单据状态已经更新,库存明细没更新(没有写入明细),此种现象按理说不应该出现,因为整个过程事务是在一起的,如果整个过程出现异常应该回滚,但是实际却没有回滚;2.入库单已经更新,库存明细已有数据,但是库存明细对应的入库单信息和来源入库单信息不一致,变成其他入库单的信息,此现象是一样没想通是为什么,审核入库单的批处理程序的参数很简单,其他定位的参数就是一个入库单的唯一标识Guid,后来改为范围过滤,用定位是因为系统的入库单是单表结构.这样的情况为什么会出现写入数据库的信息不一致呢!在想不明白的情况下暂且认为还是并发的问题
   
既然认为是并发问题,怎么来处理这个问题呢,我想了两种方式,1.在审核入库单批处理上加一个任务处理成功的标志变量,返回给调用该任务的其他程序,并在该任务上写了Error Handle事件,不管发生任何错误就回滚并重新执行!2.在我写的批量审核入库单的程序中用一个变量接收返回的成功标志,并用Block loop,如果返回的变量不为真就继续循环,直到成功为止

经过调试,在两个用户同时处理完800条记录,所有数据正确,希望以后能运行正常!

posted on 2006-09-21 14:54  千孔衣  阅读(746)  评论(0)    收藏  举报