以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何建构多级BOM树目录?高手请进!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=27839)

--  作者:关键下一秒
--  发布时间:2013/1/11 17:15:00
--  如何建构多级BOM树目录?高手请进!

如:主件             子件

       a                  b

       a                  c

       a                  d

       b                  c

       b                  e

       e                  c

生成目录树:

 | - a

 |   |-b

 |   |  |-c

 |   |  |-e

 |   |-c

 |   |-d

 |   

 | - b

 |   |-c

 |   |-e

 |

 | -e

     |-c

        

这个问题同样可以应用于上下属关系中。

可能需要递归,但还没想出来,哪位高人指点一下,谢谢!

[此贴子已经被作者于2013-1-11 17:16:51编辑过]

--  作者:lin_hailun
--  发布时间:2013/1/11 17:18:00
--  
 帮助里有吧?

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

--  作者:关键下一秒
--  发布时间:2013/1/11 17:22:00
--  
嗯,得好好研究研究
--  作者:476240618
--  发布时间:2013/1/12 12:51:00
--  

 For Each dr As DataRow In dt.datarows
        If dr("所属母件") = dbtx Then
            nd = tr.Nodes.Add(dr("物料编码"),dr("物料名称"))
            Dim r As Row = Tables("产品").AddNew()
            r("物料编码") = dr("物料编码")
            r("物料名称") = dr("物料名称")
            Functions.Execute("AddChildren",nd,dt)
           
        End If
    Next
内部函数

Dim nd As WinForm.TreeNode = args(0)
Dim dt As DataTable = args(1)
Dim drs As  List(of DataRow)
drs = dt.Select("[所属母件] = \'" & nd.name & "\'")
For Each dr As DataRow In drs
    Dim cd As Winform.TreeNode = nd.Nodes.Add(dr("物料编码"),dr("物料名称"))
  Dim s As String = dr("物料编码")
                 Dim cr As DataRow = DataTables("产品").Find("物料编码 = \'" & s & "\'")
            If cr IsNot Nothing Then
         cr("用量") = cr("用量") + dr("用量")
            Else
                Dim r As Row = Tables("产品").AddNew()
                r("物料编码") = dr("物料编码")
                r("物料名称") = dr("物料名称")
                r("用量") =  dr("用量")
            End If
    Functions.Execute("AddChildren",cd,dt)
Next