Office中国论坛/Access中国论坛

标题: [求助]问高手一个奇怪的问题 [打印本页]

作者: liuhoubin168    时间: 2007-4-3 19:44
标题: [求助]问高手一个奇怪的问题
这个问题不太好表述:

一个入库表,含产品名称,购进数量,已使用数量等

一个出库表,含产品名称,出库数量等

出库窗体中使用成为当前事件和更新前事件控制出库,使用先进先出法。

在成为当前事件中,取得当前记录的更新前产品名称和更新前出库数量

在更新前事件中,出库查询出库数量是否大于该产品的库存数量  和 退回  查询退回数量是否小于已使用数量。然后更新入库表中已使用数量字段。

这个方法调试时从来没出现过问题。但是,在用户使用时就出问题了:例如,某产品购进3个,已使用2个,现在要再出库1个,但在更新前事件中提示库存不足了,已使用数变成3个(可能程序是再次发生了更新前事件,而没有再次触发成为当前事件)。可是按F8调试时,却又不会出现这种情况。

还是说不清楚,好久把源码发上来,但用户使用中的特殊情况不容易发生。[attach]23819[/attach]


[此贴子已经被作者于2007-4-3 14:37:35编辑过]


作者: 方漠    时间: 2007-4-3 19:56
缺一库存表,用DAO 或ADO更新数据吧,建议用别ACCESS的更新查询,不太可靠,且出错时不可捕获处理.

作者: 一点通    时间: 2007-4-3 19:58
尝试改为更新后事件
作者: hi-wzj    时间: 2007-4-3 20:00
将例子放上来才好说哪里有误。
作者: liuhoubin168    时间: 2007-4-3 22:41
例子已上传
作者: hi-wzj    时间: 2007-4-3 23:35
是否因为多人操作?此法只适合单机操作。
作者: hi-wzj    时间: 2007-4-3 23:40
另外:

Private Sub Form_BeforeUpdate(Cancel As Integer)
  变化数量 = Nz(数量) - 更改前数量
  If Nz(数量) = 0 And 更改前数量 = 0 Then Exit Sub                          '更改前后数量均为零时可直接退出
  If 产品ID = 更改前产品ID Then                                             '未更换产品时
    If 出库(Nz(产品ID), Nz(变化数量)) = False Then Cancel = True            '调用出库函数
  Else
    If 出库(Nz(产品ID), Nz(数量)) = False Then Cancel = True: Exit Sub          '出库
    If 出库(Nz(更改前产品ID), Nz(更改前数量)) = False Then Cancel = True        '退货
  End If
End Sub
备注,出库和退货这两行必须变成同时成立时才能执行更改。

比如执行了出库后执行退货时发现出库(Nz(更改前产品ID), Nz(更改前数量)) = False 退出执行窗体数据不被更改,但出库计算已执行了。
作者: liuhoubin168    时间: 2007-4-4 16:43
是單機使用。

哦,謝謝版主!

再調試。
作者: bigtoodog    时间: 2007-5-11 23:47
用ADO来操作数据




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3