Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

库存先进先出

wenjian  发表于:2020-12-06 15:38:10  
复制

仓库有内仓和外仓,

如果领料数大于总库存,存单号等信息入欠料表

如果领料数小于内仓,直接发内仓,

如果领料数大于外仓库存小于内仓库存,直接发外仓,点击下载此附件

如果领料数小于内仓库存,也小于外仓库存,则出完内仓全部,再出外仓部分,


内仓是每个料号只有一个记录,

外仓会按ID分批记录,需按先进先出原则出库,比如,需外仓发料料1000,最先一批库存为800,则出第一批库存800,第二批库存200,以此类推。


单个领料单处理不成问题,

批量领料单该怎么按这个逻辑批量处理?跪求各位大大帮忙,谢谢!

 

Top
西出阳关无故人 发表于:2020-12-11 10:35:29

你的逻辑的文字描述,看不懂:

"如果领料数大于总库存,存单号等信息入欠料表",是不是领料数大于总库存,就一点都不发,全部记入欠料表?还是发完总库存,不够的记入欠料表?

"如果领料数小于内仓,直接发内仓,"--很容易理解

"如果领料数大于外仓库存小于内仓库存,直接发外仓,"--这是什么意思?是不是:如果领料数大于内仓库存小于外仓库存,直接发外仓?

"如果领料数小于内仓库存,也小于外仓库存,则出完内仓全部,再出外仓部分"--这又是什么意思啊?



西出阳关无故人 发表于:2020-12-11 10:50:46

逻辑:

Private Sub Command0_Click()
  '单一物品出库
    If 领料数 <= 总库存 Then
        If 领料数 <= 内仓数 Then
            出库数 = 领料数
            出库数记录到内仓
        Else
            If 领料数 <= 外仓数 Then
                出库数 = 领料数
                出库数记录到外仓    '先进先出逻辑另行描述
            Else
                出库数1 = 内仓数
                出库数1记录到内仓
                出库数2 = 领料数 - 出库数1
                出库数2记录到外仓    '先进先出逻辑另行描述
            End If
        End If
    Else
        出库数1 = 内仓数
        出库数2 = 外仓数
        出库数1记录到内仓
        出库数2记录到外仓 '外仓全部出完,不需要考虑先进先出
        欠料表 = 领料数 - 出库数1 - 出库数2
    End If
End Sub




wenjian 发表于:2020-12-11 11:02:51

仓库有内仓和外仓,

如果领料数大于总库存,存单号等信息入欠料表,----此单不再处理,待料中,记入欠料表。

                     --------------剩下的情况都是需要发料的。

如果领料数小于内仓,直接发内仓,  -----------没问题

如果领料数大于外仓库存小于内仓库存,直接发外仓,   -----------内仓不够,外仓足够,所以不发内仓,直接发外仓。

如果领料数小于内仓库存,也小于外仓库存,则出完内仓全部,再出外仓部分,------------总数是够的,内,外仓单独发都不够,比如领料1000,内仓有800,外仓有500.


内仓是每个料号只有一个记录,

外仓会按ID分批记录,需按先进先出原则出库,比如,需外仓发料料1000,最先一批库存为800,则出第一批库存800,第二批库存200,以此类推。


我是新手,在网站找了关于记录集循环的帖子,自己研究了好几天,总算是弄了一个出来,请各位大大帮忙看看是不是可以更简单些,谢谢各位大大的帖子帮助,谢谢!

点击下载此附件



西出阳关无故人 发表于:2020-12-11 15:01:06

解释看懂了,代码中设置变量太多,可以合并或取消,便于减少代码的量.

比如conn1/conn2等可以合并

比如ordern = rs2.Fields("orderID")  这样的变量,完全可以取消,直接用rs2.Fields("orderID")

注意insert into语句中的',不能日期类型(应为#)和数值类型(无)都用这个'代替,--只有文本类型才能用.



总记录:4篇  页次:1/1 9 1 :