Foxtable(狐表)用户栏目专家坐堂 → 求助,层级的计算


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

主题:求助,层级的计算

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/29 9:33:00 [显示全部帖子]

  目录树统计?

 

http://www.foxtable.com/help/topics/2741.htm

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/29 15:20:00 [显示全部帖子]

 递归获取其下散件,相乘即是结果,参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=56193&skin=0

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/29 19:48:00 [显示全部帖子]

 图3,是无法直接使用的,必须弄一个bom表,才方便对产品的管理。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/29 20:51:00 [显示全部帖子]

 你的物料信息根本就没有层级关系,必须单独建立一个bom表啊。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/29 21:05:00 [显示全部帖子]

 bom表,肯定有一列零件号列。

 

 bom表只需要有几列关键列即可,如 父零件号、零件号、用量


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/30 15:07:00 [显示全部帖子]

'args(0)  零件
'args(1)  编号
'args(2)  数量

Dim drs As List(Of DataRow) = DataTables("BOM").Select("零件='" & args(0) & "'")
If drs.Count>0 Then
    For Each dr As DataRow In drs
        Functions.Execute("GetZiLeiCount",dr("子零件"),args(1),dr("定额")*args(2), dr("定额"))
    Next
Else
    Dim dr As DataRow = DataTables("耗用量统计").Find("生产编号='" & args(1)("_Identify") & "' and 子零件 = '" & args(0) & "'")
    If dr Is Nothing Then
        dr = DataTables("耗用量统计").AddNew()
        dr("子零件") = args(0)
        dr("消耗量") = args(2)
        dr("生产编号") = args(1)("_Identify")
        dr("零件") = args(1)("零件")
        dr("数量") = args(1)("数量")
        dr("单台用量") = args(3)
    Else
        dr("子零件") = args(0)
        dr("消耗量") = args(2)
        dr("数量") += args(1)("数量")
    End If
End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/30 16:35:00 [显示全部帖子]

你能不能变通

 

Dim drs As List(Of DataRow) = DataTables("BOM").Select("零件='" & args(0) & "'")
If drs.Count>0 Then
    For Each dr As DataRow In drs
        Functions.Execute("GetZiLeiCount",dr("子零件"),args(1),dr("定额")*args(2), dr("定额"))
    Next
Else
    Dim dr As DataRow = DataTables("耗用量统计").Find("生产编号='" & args(1)("_Identify") & "' and 子零件 = '" & args(0) & "'")
    If dr Is Nothing Then
        dr = DataTables("耗用量统计").AddNew()
        dr("子零件") = args(0)
        dr("消耗量") = args(2)
        dr("生产编号") = args(1)("_Identify")
        dr("零件") = args(1)("零件")
        dr("数量") = args(1)("数量")
        dr("单台用量") = args(3)
    Else
        dr("子零件") = args(0)
        dr("消耗量") += args(2)
    End If
End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/30 20:24:00 [显示全部帖子]

 统计是累计,你先清空统计的内容,重新计算试试。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/30 20:27:00 [显示全部帖子]

 看21楼

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/30 20:28:00 [显示全部帖子]

如果每次要重新计算,就先清空数据

 

If e.DataCol.Name = "零件" Or e.DataCol.Name = "数量" Then
    If e.DataRow("零件") <> Nothing  And e.DataRow("数量") <> Nothing Then
        DataTables("耗用量统计").DataRows.Clear
        Functions.Execute("GetZiLeiCount",e.DataRow("零件"),e.DataRow,e.DataRow("数量"),0)
    End If
End If


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