Foxtable(狐表)用户栏目专家坐堂 → 用料按照顺序分配


  共有2365人关注过本帖树形打印复制链接

主题:用料按照顺序分配

帅哥,在线噢!
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/27 13:39:00 [只看该作者]

代码没有问题,自己的业务逻辑搞错了,先理清自己的业务,符合什么条件,怎么计算才会等于196

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:498 积分:3453 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2024/5/27 14:13:00 [只看该作者]

这个02020687 优先顺序中总共有6条记录(分别为1-6)未发数量合计:2757,这条欠料明细中汇总的在途数量:2100,按照优先顺序先后中1-4的挂标数量可以等于未发数量,但是到第5的时候,在途数量 -1到4的挂标数量汇总后,只剩下196(计算公式:2100-(280-224-630-770) = 196),因此第5条的挂标数量只能是196,第6条挂标数量则为0,因为这2100已被1至5全部分配完成。
[此贴子已经被作者于2024/5/27 14:16:32编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/27 14:26:00 [只看该作者]

自己1楼说的不清不楚,所以代码只是减去4的挂标数量。如果还要减去1、2、3的挂标数量。就找到这些行的数据减去就行了

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:498 积分:3453 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2024/5/27 14:30:00 [只看该作者]

是的,但是这个优先顺序行数不是固定的,有可能只有1条,或者2条,甚至多的时候会有20来条。这种怎么修改呢?
Dim dr2 As DataRow = DataTables("配件需求明细_明细查询").find("材料编码='" & r("材料编码") & "' and 优先顺序='" & Val(r("优先顺序") - 1) & "'") '查找上一个优先顺序

 回到顶部
帅哥,在线噢!
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/27 14:33:00 [只看该作者]

优先顺序改为整数列,然后使用compute统计所有小于当前优先顺序的行的数量

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:498 积分:3453 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2024/5/27 14:51:00 [只看该作者]

是整数列,能帮忙改一下吗?

 回到顶部
帅哥,在线噢!
有点蓝
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/27 14:52:00 [只看该作者]

上传的例子是字符列,不是整数列。


 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:498 积分:3453 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2024/5/27 20:19:00 [只看该作者]

老师,能帮忙看下12楼代码咋 改吗?研究了下,还是没怎么明白

 回到顶部
帅哥,在线噢!
有点蓝
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/27 20:22:00 [只看该作者]

dim 小于当前顺序的挂标数量之和  as double = DataTables("配件需求明细_明细查询").compute("sum(挂标数量)","材料编码='" & r("材料编码") & "' and 优先顺序<" & r("优先顺序"))

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:498 积分:3453 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2024/5/27 21:24:00 [只看该作者]

老师,我咋改得不对
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 Double = DataTables("配件需求明细_明细查询").sqlcompute("sum(挂标数量)", "材料编码 ='" & r("材料编码") & "' and 优先顺序 < '" & r("优先顺序") & "'")
                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 
    Next 
End If

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看



 回到顶部
总数 24 上一页 1 2 3 下一页