Office中国论坛/Access中国论坛

标题: 如何按订单日期先后自动分配库存 [打印本页]

作者: zyz218    时间: 2011-3-22 18:52
标题: 如何按订单日期先后自动分配库存
如题。同一种产品有好几个交期。这样需根据交期与库存量生成取库存计划。请给力!
作者: todaynew    时间: 2011-3-23 10:22
本帖最后由 todaynew 于 2011-3-25 15:32 编辑
zyz218 发表于 2011-3-22 18:52
如题。同一种产品有好几个交期。这样需根据交期与库存量生成取库存计划。请给力!


1、建立交货表:交货ID(主键),货品ID(外键),日期,库存结余量,交货数量,已交货(y/n)
2、用数据表窗体或连续窗体绑定交货表
3、在库存结余量控件的双击事件中写:
me.库存结余量.value=dlast("库存量","库存表","货品ID=" & me.货品ID.value & " and 日期<=#" & me.日期.value & "#")+nz(me.库存结余量.DefaultValue,0)
4、在交货数量的更新后事件中写:
me.库存结余量.DefaultValue=me.库存结余量.value-me.交货数量.value
5、3至4为新增处理,修改处理可按照此思路做进一步的完善。
作者: zyz218    时间: 2011-3-23 21:07
谢谢TODAYNEW给予的思路。在下努力试试,有结果再共享。
作者: zyz218    时间: 2011-3-25 22:16

Private Sub cmdplan_Click()
Dim onqty As Long
Dim STemp As String
Dim Rs As ADODB.Recordset
Set Rs = New ADODB.Recordset
STemp = "Select * From pack_plan"
Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

    '删除欠包数量为零的记录
    DoCmd.SetWarnings False
    STemp = "delete * from solist where lackqty=0"
    DoCmd.RunSQL STemp
    '-----------------------------------------------------------------------------------
    '对在库量按纳期先后进行分配
    Rs.MoveFirst  '指针指到第一条记录
    Do Until Rs.EOF = True  '对数据循环计算,直到最后一条记录为止
    onqty = Nz(DLookup("distri", "stock", "codeno='" & Rs("codeno") & "'and yearmonth='" & Me.yearmonth & "'and area='库存区'"), 0)
        If Rs("lackqty") <= onqty Then
            '更新分配数
            Rs("distri") = Rs("lackqty")
            Rs.Update
            '更新可分配数
            STemp = "update stock set distri=distri-" & Rs("lackqty") & " where codeno='" & Rs("codeno") & "'and yearmonth='" & Me.yearmonth & "'and area='库存区'"
            DoCmd.RunSQL STemp
        End If
    Rs.MoveNext '指针跳到下一条记录
    Loop '继续:  Do Until rs.EOF = True
End Sub
入库时对可分配库存增加更新,记录集源为按纳期排序的查询。

以上为本人对此问题的处理办法,希望对相关人员有所帮助。
作者: zyz218    时间: 2011-3-25 22:16

Private Sub cmdplan_Click()
Dim onqty As Long
Dim STemp As String
Dim Rs As ADODB.Recordset
Set Rs = New ADODB.Recordset
STemp = "Select * From pack_plan"
Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

    '删除欠包数量为零的记录
    DoCmd.SetWarnings False
    STemp = "delete * from solist where lackqty=0"
    DoCmd.RunSQL STemp
    '-----------------------------------------------------------------------------------
    '对在库量按纳期先后进行分配
    Rs.MoveFirst  '指针指到第一条记录
    Do Until Rs.EOF = True  '对数据循环计算,直到最后一条记录为止
    onqty = Nz(DLookup("distri", "stock", "codeno='" & Rs("codeno") & "'and yearmonth='" & Me.yearmonth & "'and area='库存区'"), 0)
        If Rs("lackqty") <= onqty Then
            '更新分配数
            Rs("distri") = Rs("lackqty")
            Rs.Update
            '更新可分配数
            STemp = "update stock set distri=distri-" & Rs("lackqty") & " where codeno='" & Rs("codeno") & "'and yearmonth='" & Me.yearmonth & "'and area='库存区'"
            DoCmd.RunSQL STemp
        End If
    Rs.MoveNext '指针跳到下一条记录
    Loop '继续:  Do Until rs.EOF = True
End Sub
入库时对可分配库存增加更新,记录集源为按纳期排序的查询。

以上为本人对此问题的处理办法,希望对相关人员有所帮助。
作者: lirong    时间: 2011-4-13 20:20
弄个范例最好




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