设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[模块/函数] 如何按订单日期先后自动分配库存

[复制链接]
跳转到指定楼层
1#
发表于 2011-3-22 18:52:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题。同一种产品有好几个交期。这样需根据交期与库存量生成取库存计划。请给力!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-3-23 10:22:15 | 只看该作者
本帖最后由 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为新增处理,修改处理可按照此思路做进一步的完善。
3#
 楼主| 发表于 2011-3-23 21:07:17 | 只看该作者
谢谢TODAYNEW给予的思路。在下努力试试,有结果再共享。
4#
 楼主| 发表于 2011-3-25 22:16:06 | 只看该作者

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
入库时对可分配库存增加更新,记录集源为按纳期排序的查询。

以上为本人对此问题的处理办法,希望对相关人员有所帮助。
5#
 楼主| 发表于 2011-3-25 22:16:50 | 只看该作者

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
入库时对可分配库存增加更新,记录集源为按纳期排序的查询。

以上为本人对此问题的处理办法,希望对相关人员有所帮助。
6#
发表于 2011-4-13 20:20:44 | 只看该作者
弄个范例最好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 01:48 , Processed in 0.097401 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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