以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]入库与出库的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=22270) |
-- 作者:jiskin -- 发布时间:2012/8/7 20:05:00 -- [求助]入库与出库的问题 假如A产品入库的时候带单价,出库的时候单价和入库时一样, 如果产品A 多次入库的单价不同,出库数量和次数也不确定,有没有办法确定出库时的单价呢? |
-- 作者:jiskin -- 发布时间:2012/8/8 8:56:00 -- 请教,用什么方法去判断批次呢,另外主要是出库数量不确定,进货的X批次可能要混合进货的Y批次出库的话 两批次单价不同 有没有什么好的解决方案呢 |
-- 作者:狐狸爸爸 -- 发布时间:2012/8/8 9:06:00 -- 很难,特别是混合的时候,所以最好从改变工作流程入手:
1、出库表加入一个入库单号,和出库表通过入库单号关联,入库单是父表。 2、入库表加入一个出库数量和剩余数量列,两个都是表达式列。 3、某产品出库的时候,从入库表从入库表选择该产品的某个有剩余数量的入库行,单击“出库”按钮,输入出库数量,这样单价就清楚了,也避免混合出库的问题。 |
-- 作者:jiskin -- 发布时间:2012/8/9 13:47:00 -- 请教狐爸 我用了表达式列后 逻辑好像循环了 入库出库做了关联然后在入库表里加了个剩余数量的表达式列:[入库数量] - IsNull(Sum(Child(rck).领用数量),0) 然后我在出库表的领用数量做了代码: If e.DataCol.name = "领用数量" Then If e.DataRow.Isnull("入库编号") Then e.DataRow("领用数量") = Nothing Else Dim dx As DataRow = DataTables("入库").Find("入库编号 = \'" & e.DataRow("入库编号") & "\'") If e.DataRow("领用数量") > dx("剩余数量") Then messagebox.show("数量不能超过入库编号的剩余数量!") End If End If End If 这样就循环了,比如我剩余数量显示20 我领用15 就会弹出"数量不能超过入库编号的剩余数量!"的提示,除非你领用数量<=10才没有提示 |
-- 作者:jiskin -- 发布时间:2012/8/9 16:53:00 -- 多谢帮忙 我搞定了 If e.DataCol.name = "领用数量" Then If e.DataRow.Isnull("入库编号") Then e.DataRow("领用数量") = Nothing Else Dim dx As DataRow = DataTables("入库").Find("入库编号 = \'" & e.DataRow("入库编号") & "\'") If dx("剩余数量") < 0 Then messagebox.show("数量不能超过入库编号的剩余数量!") e.DataRow("领用数量") = 0 End If End If End If |