以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]入库与出库的问题  (http://www.foxtable.com/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