Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共24 条记录, 每页显示 10 条, 页签: [1] [2] [3]
[浏览完整版]

标题:用料按照顺序分配

11楼
有点蓝 发表于:2024/5/27 13:39:00
代码没有问题,自己的业务逻辑搞错了,先理清自己的业务,符合什么条件,怎么计算才会等于196
12楼
nuoyan89 发表于: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楼
有点蓝 发表于:2024/5/27 14:26:00
自己1楼说的不清不楚,所以代码只是减去4的挂标数量。如果还要减去1、2、3的挂标数量。就找到这些行的数据减去就行了
14楼
nuoyan89 发表于:2024/5/27 14:30:00
是的,但是这个优先顺序行数不是固定的,有可能只有1条,或者2条,甚至多的时候会有20来条。这种怎么修改呢?
Dim dr2 As DataRow = DataTables("配件需求明细_明细查询").find("材料编码='" & r("材料编码") & "' and 优先顺序='" & Val(r("优先顺序") - 1) & "'") '查找上一个优先顺序
15楼
有点蓝 发表于:2024/5/27 14:33:00
优先顺序改为整数列,然后使用compute统计所有小于当前优先顺序的行的数量
16楼
nuoyan89 发表于:2024/5/27 14:51:00
是整数列,能帮忙改一下吗?
17楼
有点蓝 发表于:2024/5/27 14:52:00
上传的例子是字符列,不是整数列。

compute的用法参考:http://www.foxtable.com/webhelp/topics/0548.htm
18楼
nuoyan89 发表于:2024/5/27 20:19:00
老师,能帮忙看下12楼代码咋 改吗?研究了下,还是没怎么明白
19楼
有点蓝 发表于:2024/5/27 20:22:00
dim 小于当前顺序的挂标数量之和  as double = DataTables("配件需求明细_明细查询").compute("sum(挂标数量)","材料编码='" & r("材料编码") & "' and 优先顺序<" & r("优先顺序"))
20楼
nuoyan89 发表于: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 条记录, 每页显示 10 条, 页签: [1] [2] [3]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .05078 s, 2 queries.