北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
本来想让 pab(x)=pab(x-1)-毛需求(x)+在途量
通过提取在途量中的数据来计算
但是在计算的时候出现反复计算的情况 ,如图中当在途量为3时候,计算了两次,然后才计算的在途量为4的时候。代码如下:
Dim PM(1 To 11) As Integer '毛需求
Dim PP(1 To 13) As Integer 'PAB
Dim pj(1 To 11) As Integer '净需求
Dim ppb As Database '定义数据库对象
Dim ppz As Recordset '定义在途量
Set ppb = CurrentDb '数据库为当前数据库
Set ppz = ppb.OpenRecordset("Select 当期,第一周,第二周,第三周,第三周,第四周,第五周,第六周,第七周,第八周,第九周,第十周,第十一周,第十二周,第十三周 FROM 物料需求计划 WHERE 时段='(P3)在途量'")
Dim XP As Integer
XP = 2
Do While XP < 12
PM(XP) = wfc(XP)
XP = XP + 1
Loop
PP(1) = ppz.Fields(0) + 120 - PM(1)
Dim YP As Integer
Dim ZP As Integer
YP = 2
Do While YP < 12
ZP = 0
Do While PP(YP - 1) - PM(YP) + ZP * 100 < 50
ZP = ZP + 1
Loop
PP(YP) = PP(YP - 1) - PM(YP) + ZP * 100 + ppz.Fields(YP-1) 'pab(x)=pab(x-1)-毛需求(x)+zp*批量+在途量
YP = YP + 1
Loop
PP(12) = PP(11)
PP(13) = PP(12)
Dim ZZX As Integer
ZZX = 2
Do While ZZX < 11
If PP(ZZX) - PM(ZZX) - 50 < 0 Then
pj(ZZX) = PM(ZZX) - PP(ZZX)
Else
pj(ZZX) = 0
End If
ZZX = ZZX + 1
Loop
sql = "UPDATE 物料需求计划 SET 第一周 = " & PM(1) & ",第二周 = " & PM(2) & ",第三周 = " & PM(3) & ",第四周 = " & PM(4) & ",第五周 = " & PM(5) & ",第六周 = " & PM(6) & ",第七周 = " & PM(7) & ",第八周 = " & PM(8) & ",第九周 = " & PM(9) & ",第十周 = " & PM(10) & ",第十一周=0,第十二周 = 0,第十三周=0 WHERE 时段='(P1)毛需求量'"
DoCmd.RunSQL (sql)
sql = "UPDATE 物料需求计划 SET 第一周 = " & PP(1) & ",第二周 = " & PP(2) & ",第三周 = " & PP(3) & ",第四周 = " & PP(4) & ",第五周 = " & PP(5) & ",第六周 = " & PP(6) & ",第七周 = " & PP(7) & ",第八周 = " & PP(8) & ",第九周 = " & PP(9) & ",第十周 = " & PP(10) & ",第十一周 = " & PP(11) & ",第十二周 = " & PP(12) & ",第十三周=" & PP(13) & " WHERE 时段='(P2)PAB'"
DoCmd.RunSQL (sql)
sql = "update 物料需求计划 set 第一周=0,第二周=" & pj(2) & ",第三周=" & pj(3) & ",第四周 = " & pj(4) & ",第五周 = " & pj(5) & ",第六周 = " & pj(6) & ",第七周 = " & pj(7) & ",第八周 = " & pj(8) & ",第九周 = " & pj(9) & ",第十周 = " & pj(10) & ",第十一周 = " & pj(11) & ",第十二周 =0,第十三周= 0 WHERE 时段='(P4)净需求量'"
DoCmd.RunSQL (sql)