设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1842|回复: 8
打印 上一主题 下一主题

[其它] [求助]问高手一个奇怪的问题

[复制链接]
跳转到指定楼层
1#
发表于 2007-4-3 19:44:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个问题不太好表述:

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

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

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

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

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

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

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


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-4-3 19:56:00 | 只看该作者
缺一库存表,用DAO 或ADO更新数据吧,建议用别ACCESS的更新查询,不太可靠,且出错时不可捕获处理.
3#
发表于 2007-4-3 19:58:00 | 只看该作者
尝试改为更新后事件
4#
发表于 2007-4-3 20:00:00 | 只看该作者
将例子放上来才好说哪里有误。
5#
 楼主| 发表于 2007-4-3 22:41:00 | 只看该作者
例子已上传
6#
发表于 2007-4-3 23:35:00 | 只看该作者
是否因为多人操作?此法只适合单机操作。
7#
发表于 2007-4-3 23:40:00 | 只看该作者
另外:

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 退出执行窗体数据不被更改,但出库计算已执行了。
8#
 楼主| 发表于 2007-4-4 16:43:00 | 只看该作者
是單機使用。

哦,謝謝版主!

再調試。
9#
发表于 2007-5-11 23:47:00 | 只看该作者
用ADO来操作数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-6 22:06 , Processed in 0.095645 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表