以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助:计算时考虑最小采购量与最小包装量(已解决)  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=40691)

--  作者:jiterp
--  发布时间:2013/9/26 20:04:00
--  求助:计算时考虑最小采购量与最小包装量(已解决)


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


 需要实现的结果:
1、当[欠料量]<=[最小批量],[实际需求]=[最小批量];
2、当[欠料量]>[最小批量],则需要考虑[最小包装]的倍数,如上例中[欠料量]1200 >  [最小批量],在考虑[最小包装] 500,则实际需求 = 1500 ,判断条件: [欠料量]/[最小包装]的值,如果没有小数点,即:[欠料量]/[最小包装]*[最小包装];

如果有小数点,即: [欠料量]/[最小包装]的值的个数进1后(不是四舍五入)*[最小包装] .

我搞了半天,实在整不出来,求助老师帮忙,谢谢!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:运算考虑最小采购量与最小包装量.table

[此贴子已经被作者于2013-9-26 22:33:40编辑过]

--  作者:有点甜
--  发布时间:2013/9/26 20:50:00
--  
 呃,看半天,楼主你是不是想问,第2个问题的代码怎么写?

mr("实际需求") = math.Ceiling((-mr("欠料量")) / mr("最小包装量")) * mr("最小包装量")

--  作者:jiterp
--  发布时间:2013/9/26 22:33:00
--  

就是要的这句,我老用Round2,在DataColChanged事件中加入以下代码,就可以了,谢谢!

Select Case e.DataCol.Name
    Case "物料","需求量","库存量","欠料量","实际需求","最小批量","最小包装"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        mr("欠料量") = mr("库存量") - mr("需求量")
        If mr("欠料量") >= 0 Then
            mr("实际需求") = 0
        Else
            If (- mr("欠料量")) < mr("最小批量") Then
                mr("实际需求") = (- mr("最小批量"))
            Else
                mr("实际需求") = math.Ceiling((-mr("欠料量")) / mr("最小包装")) * mr("最小包装")
            End If
        End If
End Select

[此贴子已经被作者于2013-9-26 22:33:18编辑过]