老师,我有两个表,一个库存表窗口表如图库存表(表名:用料分配_表A,独立)这个窗口表中的所有列名全部是新增的临时列,一个是配件需求明细如图配件需求明细(这个也是窗口表),我在库存表这个窗口的控件设置了代码,我点击这个控件时,分配条件:把选中的材料,根据优先顺序进行分配,分配过程中,1、优先顺序为1时,如库存表中的可用数量大于配件需求明细中的未发数量,挂标数量为未发数量,如可用数量小于不等于0,挂标数量等于可用数量,2、优先顺序为2时,如可用数量-优先顺序为1里的挂标数量大于优先顺序2中的未发数量,该挂标数量为可用数量-优先顺序为1里的挂标数量,如结果小于不等于0,挂标数量等于该相减的结果;以此类推如附件表格。
操作步骤:打开《配件需求明细》窗口,在需要操作的行前面打勾,点击控件”欠料明细“。会打开“欠料需求表”窗口表,点击控件“用料分配”,然后把可用数量按照材料编码、优先顺序在配件《需求明细_明细查询》窗口表中分配给选中的行,数量指定到《需求明细_明细查询》的挂标数量列
1、哪个是库存表?
2、如下图,材料编码02025920有14行,如果只勾选第一行,然后点击”欠料明细“,最后分配的时候,是只处理勾选的第一行,还是这14行全部都要处理?
此主题相关图片如下:1.png
老师,只处理勾选的那一行!库存表就是配件需求明细窗口中点击控件欠料明细后计算出来的可用数量就是需要做分配的库存,其实这个帖子里就是算库存的http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=192048
[此贴子已经被作者于2024/5/26 23:29:50编辑过]
老师,我把代码改了下,汇总的结果如图2,编码02020687 在途数量:2100,分配到配件需求明细_明细查询窗口表中,这个编码优先顺序5的挂标数量应该为:196,但是实际分配出来的数据确为469了,优先顺序6的挂标数量应该为:0,但是实际分配出来的数据确为384了.请帮忙看看,谢谢
If Forms("配件需求明细").Opened Then
For Each r As Row In Tables("配件需求明细_明细查询").GetCheckedRows
Dim dr As DataRow = DataTables("欠料需求表_需求表").Find("材料编码='" & r("材料编码") & "'")
If dr IsNot Nothing Then
If r("优先顺序") = "1" Then '优先顺序为1时
If dr("在途数量") >= r("未发数量") Then
r("挂标数量") = r("未发数量") '如库存表中的可用数量大于配件需求明细中的未发数量,挂标数量为未发数量
ElseIf dr("在途数量") <= 0 Then
r("挂标数量") = 0 '如可用数量小于不等于0,挂标数量等于可用数量
End If
Else
Dim dr2 As DataRow = DataTables("配件需求明细_明细查询").find("材料编码='" & r("材料编码") & "' and 优先顺序='" & Val(r("优先顺序") - 1) & "'") '查找上一个优先顺序
If dr2 IsNot Nothing Then
If (dr("在途数量") - dr2("挂标数量")) > 0 And (dr("在途数量") - dr2("挂标数量")) >= r("未发数量") Then '如可用数量-优先顺序为1里的挂标数量大于优先顺序2中的未发数量
r("挂标数量") = r("未发数量") '该挂标数量为可用数量-优先顺序为1里的挂标数量
ElseIf (dr("在途数量") - dr2("挂标数量")) > 0 And (dr("在途数量") - dr2("挂标数量")) < r("未发数量") Then '如结果小于不等于0
r("挂标数量") = dr("在途数量") - dr2("挂标数量") '挂标数量等于该相减的结果
ElseIf (dr("在途数量") - dr2("挂标数量")) <= 0 And r("未发数量") > 0 Then '如结果小于不等于0
r("挂标数量") = 0 '挂标数量等于该相减的结果
End If
End If
End If
End If
Next
End If
此主题相关图片如下:2.png
按1楼说的额分配方式,是没有问题的,因为计算符合下面条件
If (dr("在途数量") - dr2("挂标数量")) > 0 And (dr("在途数量") - dr2("挂标数量")) >= r("未发数量") Then '如可用数量-优先顺序为1里的挂标数量大于优先顺序2中的未发数量
r("挂标数量") = r("未发数量") '该挂标数量为可用数量-优先顺序为1里的挂标数量
ElseIf (dr("在途数量") - dr2("挂标数量")) > 0 And (dr("在途数量") - dr2("挂标数量")) < r("未发数量") Then '如结果小于不等于0
r("挂标数量") = dr("在途数量") - dr2("挂标数量") '挂标数量等于该相减的结果
ElseIf (dr("在途数量") - dr2("挂标数量")) <= 0 And r("未发数量") > 0 Then '如结果小于不等于0
r("挂标数量") = 0 '挂标数量等于该相减的结果
End If
有问题也是您自己的业务逻辑搞错了
[此贴子已经被作者于2024/5/27 11:48:49编辑过]