以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  出库单保存前先检查库存  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100924)

--  作者:hopestarxia
--  发布时间:2017/5/21 16:09:00
--  出库单保存前先检查库存
设计了一个出库单录入窗口,出库单窗口表体主要内容是关联到出库单主表,窗口中Table关联到了出库表明细,主表与明细表用单据ID相关联。
目前在录入窗口关联的Table中关联了选择货品的窗口,双击窗口可以选择得到货品的基本信息,包括当前库存信息到出库单录入窗口中,在填上相应的数量和单价即可。
出库单录入窗口中有一“保存”按钮,现在想实现在点击保存按钮时,先实现库存检测,如果存在明细行出库数量大于库存数量的,即提示库存不足,同时停止运行,不保存单据,需要人为重新调整单据内容,再重新点“保存”按钮,没有不合理的时再实现保存完成。
请问保存按钮处的这个判断怎么写?



--  作者:舟舟
--  发布时间:2017/5/21 19:37:00
--  
这个难度不大吧,逐行判断明细表,与数据库中的库存进行比较,即可啊
--  作者:hopestarxia
--  发布时间:2017/5/21 23:12:00
--  
Dim t1 As Table = e.form.Controls("Table1").Table
For Each r As Row In t1.Rows

If  r("quantity") > r("xqjc")  Then
    msgbox("库存不足,请检查")
    Return
End If

Next
目前使用的代码,没有效果,请问是哪里错误?

--  作者:liusongboy
--  发布时间:2017/5/22 0:40:00
--  
其实我想说数据库做个约束。库存>0。这样就不在编写代码。而且是实时的。
剩下就一个问题了。库存大于0的会保存吗。库存小于0的由于约束存在必然会出保存不了。
也就是狐表保存数到sql用的是事物提交吗。有一个错误就全部会回滚吗。
通俗点就是出库明细有五条记录有条由于库存小于0受到sql库存必须大于0的约束会保存失败。其他4条有库存的会保存吗。

--  作者:liusongboy
--  发布时间:2017/5/22 0:44:00
--  
还有这样写代码的话单机没问题。多用户的话。如果别人在你载入库存的时候刚好出库了这个产品而且库存=0了。那你也察觉不到了。
--  作者:liusongboy
--  发布时间:2017/5/22 0:47:00
--  
最好的方法是在你保存的时候查询实时的库存看看能不能出库。
还有一个办法就是先出后入的方法。库存可以为0这样也行。因为你库存不可能有多吧。还可以没入库先出库

--  作者:舟舟
--  发布时间:2017/5/22 6:58:00
--  
保存时候用sql查一下库存,比较即可。
--  作者:有点色
--  发布时间:2017/5/22 7:47:00
--  

 回复3楼,你的表结构是怎样的?库存和数量都有值了吗?只要满足条件就会弹出提示的。

 

 请做个实例说明。


--  作者:hopestarxia
--  发布时间:2017/5/22 8:47:00
--  1
不是,是在点击保存时,如果5条记录发现有一条或一条以上的记录库存不足记录,则停止运行都不保存.
需要录单的操作人员将库存不足的记录修改出库数量至合理数值,或是删除该行后再重新点保存按钮.


--  作者:hopestarxia
--  发布时间:2017/5/22 8:49:00
--  
谢谢老师,正在学习当中,这个还没考虑到.我先以单机达到功能.