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


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

主题:[求助]BOM物料成本核算

帅哥哟,离线,有人找我吗?
yangsion
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:114 积分:1628 威望:0 精华:0 注册:2013/6/11 19:13:00
[求助]BOM物料成本核算  发帖心情 Post By:2017/6/22 7:40:00 [只看该作者]

搞了 好久没弄好,要崩溃了

,需要的效果是,如果是第一层,那么成本就等于单价,这个OK,

如果有下层,那么dr1(“单价“)= dr2单价*dr2数量 之和,卡了好久不知道怎么弄,希望老师大神门帮帮忙

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:bom 测试_201706220247.zip

[此贴子已经被作者于2017/6/22 7:48:31编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/22 9:41:00 [只看该作者]

 汗,才理解你的意思。为什么要在展开的时候计算?你在bom表里面可以先一次性得到值啊。

 

内部函数 sum

Dim dr As DataRow = args(0)
Dim dt As DataTable = dr.DataTable
Dim dj As Double = dr("单价")
Dim drs As List(of DataRow)
drs = dt.Select("[父键] = '" & dr("子键") & "'")
If drs.Count = 0 Then
    Return dr("单价")
Else
    Dim sum As Double = 0
    For Each cdr As DataRow In drs
        sum += Functions.Execute("sum",cdr) * cdr("数量")
    Next
    dr("单价") = sum
    Return sum
End If

 

计算单价代码

Dim dt As DataTable = DataTables("bom")
For Each dr As DataRow In dt.Select("父键 is null")
    Functions.Execute("sum",dr)
Next


 回到顶部
帅哥哟,离线,有人找我吗?
yangsion
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:114 积分:1628 威望:0 精华:0 注册:2013/6/11 19:13:00
  发帖心情 Post By:2017/6/23 0:08:00 [只看该作者]

这个挺好了,就是没有父键为空的比较多的时候容易闪退

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/23 0:35:00 [只看该作者]

以下是引用yangsion在2017/6/23 0:08:00的发言:
这个挺好了,就是没有父键为空的比较多的时候容易闪退

 

闪退应该是因为你的数据【死循环】了吧?比如 A有子健B,B的子健又是A


 回到顶部