以文本方式查看主题

-  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=117540)

--  作者:huangxueyao
--  发布时间:2018/4/14 10:17:00
--  帮忙搞个BOM递归函数,谢谢
BOM表结构:父级编号、子级编号、子级数量

需求:在新建物料BOM时,需要判断其子级的所有子孙子级中是否包含当前父级,以避免死循环。

我的思路,通过递归函数查询子级的所有子孙子级,把他们的子级编号全部汇总成一条string(格式001|002|003|006),然后再用父级编号跟这个string来比较一下即可。

现求这样的一个递归函数……

谢谢

--  作者:有点蓝
--  发布时间:2018/4/14 10:36:00
--  
例如函数getstring

Dim parent As String = args(0)
Dim lst As new List(of String)
Dim drs As  List(of DataRow)
drs = DataTables("表A").Select("[父键] = \'" & parent & "\'")
If drs.Count = 0
    lst.Add(parent)
Else
    For Each dr As DataRow In drs
        Dim child As  List(of String) = Functions.Execute("getstring",dr("键"))
        For Each c As String In child
            lst.Add(parent & "|" & c)
        Next
    Next
End If
Return lst

调用
Dim lst As List(of String) = Functions.Execute("getstring","1")
For Each s As String In lst
    Output.Show(s)
Next