以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何可以做到一次全部展开多阶层的BOm (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98679) |
||||
-- 作者:2900819580 -- 发布时间:2017/4/5 9:28:00 -- 如何可以做到一次全部展开多阶层的BOm 如下代码,我单层展开的方法如下,如何可以做到一次全部展开,不定层次的BOM表,BOM阶层如上,可能会有4层,5层,或者更多。 Dim tb As Table = Tables(e.Form.Name & "_" & "Table1") Dim cn() As String = {"i","总序号","父阶代码","子阶代码","名称","规格型号","单位","用量","选用料","车间","组别","默认仓库名称","备注","序号"} Dim r As Row = tb.Current Dim t As String = r("i") Dim sn As String,sn1 As String If t = "+" Then tb.StopRedraw sn = r("排序号") sn1 = r("总序号") r("i") = "-/\\-" Dim drs As List(of DataRow) drs = DataTables("BOM").Select("父阶代码 =\'" & r("子阶代码") & "\'") For Each dr As DataRow In drs Dim r1 As Row = tb.AddNew For i As Integer = 0 To cn.Length - 1 If cn(i) <> "总序号" Then r1(cn(i)) = dr(cn(i)) Else r1("总序号") = sn1 & "." & dr("序号") r1("排序号") = sn & "." & Format(dr("序号"),"000") Dim str As String = r1("总序号") r1("阶层") = str.split(".").length End If Next Next tb.Sort = "排序号" tb.ResumeRedraw End If
[此贴子已经被作者于2017/4/5 9:32:12编辑过]
|
||||
-- 作者:有点色 -- 发布时间:2017/4/5 11:02:00 -- 最简单脑残的方法,把循环的语句复制粘贴写4到5或者10个。
如果你的父代码是全部显示的,可以取巧用模糊匹配 drs = DataTables("BOM").Select("父阶代码 like \'" & r("子阶代码") & "%\'")
最靠谱的方法是递归,参考 http://www.foxtable.com/webhelp/scr/2416.htm
|
||||
-- 作者:2900819580 -- 发布时间:2017/4/5 14:24:00 -- 有点色老师,我的明细表不是通过筛选得出来的,而是通过增加行得到的,这样才可以将序号及排序做上去。 看来前两种 方法不太合适我,可是递归函数看完了,跟着教程做,可以做到教程的效果,可是没办法用在我这里, 老师可以帮忙改一下我的代码吗?
|
||||
-- 作者:有点色 -- 发布时间:2017/4/5 15:14:00 -- 上传具体例子项目说明你的问题。 |
||||
-- 作者:2900819580 -- 发布时间:2017/4/5 17:05:00 --
老师,如附件,全部展开 |
||||
-- 作者:有点色 -- 发布时间:2017/4/5 18:11:00 -- 全部展开按钮,具体细节自己调整。
|