Foxtable(狐表)用户栏目专家坐堂 → [求助]BOM成本计算


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

主题:[求助]BOM成本计算

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


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/22 13:49:00 [显示全部帖子]

不要搞些原始的东西让我分析,没接触过生产管理,看不懂。

先导好数据,然后告诉我计算规则,最终需要什么结果,给出手工计算结果做对比

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


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/22 14:30:00 [显示全部帖子]

解释一下,每一行数据是怎么计算的。

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


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/22 15:15:00 [显示全部帖子]

首先我不懂这些业务,其次我也没有功夫去一个个分析这些公式。

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


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/22 15:26:00 [显示全部帖子]

根据什么判断哪个是最底层,怎么获取判断哪个是它的上一层。

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


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/22 16:13:00 [显示全部帖子]

大概思路

1、获取最底层:在上阶序号里不存在的序号就是最底层
Dim  drs As  List(of  DataRow) = DataTables("BOM清单").SQLSelect("序号 not in (select 上阶序号 from {BOM清单}  where 上阶序号 is not null)")
Output.Show(drs.Count)

2、遍历上面所有行,通过上阶序号查询,获取这个上阶序号有几行下一层
for each dr as datarow in drs
Dim  drs2 As  List(of  DataRow) = DataTables("BOM清单").Select("上阶序号=" & dr("上阶序号"))
计算drs2这些行的各种值(比如当阶材料成本等)求和
查询序号=上阶序号的数据:dim dr2 as datarow = DataTables("BOM清单").find("序号=" & dr("上阶序号"))
dr2("当阶材料成本") = 上面计算的求和结果
      同样方法递归处理drs2各行的上一层
next

比如序号为6为最底层,其上阶序号为5,上阶序号为5的行只有序号为6这一行,计算序号为6这一行当阶材料成本等写入序号为5这一行的当阶材料成本列;
继续向上处理,序号为5的上阶序号为4,上阶序号为4的行有序号为5、7、8这3行,那么就计算5、7、8这3行的材料成本写入序号为4这一行的当阶材料成本列;
继续向上处理,序号为4的上阶序号为3,..............

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


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/27 22:14:00 [显示全部帖子]

几十万行数据如果都没有计算过,慢也就慢一次好了,等慢慢计算结束。

以后新增加,或者修改的数据就只需要计算和这行数据有关的本级或者递归上级处理,这种应该就快了

 回到顶部