以文本方式查看主题 - 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=92548) |
||||
-- 作者:jiterp -- 发布时间:2016/11/6 21:53:00 -- 求助:求一段设定BOM的级次码的代码?(已解决) 求一段代码,得到BOM的级次码,第一张图是空的,第二张图是要的效果。就是点按钮事件后,出现第二张图效果。
附上示例:
谢谢! [此贴子已经被作者于2016/11/7 4:26:21编辑过]
|
||||
-- 作者:y2287958 -- 发布时间:2016/11/6 23:35:00 -- Dim y As String = "A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z" Dim yws As new List(of String) For Each yw As String In y.Split("|") yws.Add(yw) Next For Each dr As DataRow In DataTables("表A").DataRows If dr.IsNull("子键") dr("级次") = Nothing Else Dim s As String = yws.Indexof(dr("子键").Chars(0)) If dr("子键").Length > 1 For i As Integer = 1 To dr("子键").Length - 1 s += "." & dr("子键").Chars(i) Next End If dr("级次") = s End If Next |
||||
-- 作者:jiterp -- 发布时间:2016/11/7 4:02:00 -- 以下是引用y2287958在2016/11/6 23:35:00的发言:
Dim y As String = "A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z"
Dim yws As new List(of String)
For Each yw As String In y.Split("|")
yws.Add(yw)
Next
For Each dr As DataRow In DataTables("表A").DataRows
If dr.IsNull("子键")
dr("级次") = Nothing
Else
Dim s As String = yws.Indexof(dr("子键").Chars(0))
If dr("子键").Length > 1
For i As Integer = 1 To dr("子键").Length - 1
s += "." & dr("子键").Chars(i)
Next
End If
dr("级次") = s
End If
Next
谢谢,不过理解错了,执行的结果最后两条是错的,不是2.1和2.1.1,而应该是6.1和6.1.1,我要解决的就是同一个BOM中,有两个半成品都是用到同样的料,在用狐表示例(递归函数)的方式形成目录树的时候,就会在这两个半成品下面挂着两个相同的料号,实际上就是一笔。我想通过这种级次码生成目录树,就不会出现这样的问题。 |
||||
-- 作者:jiterp -- 发布时间:2016/11/7 4:26:00 -- 原来我以前问过,以前没仔细研究这段代码,原来是可以通用的,之前以为是通过级次来实现的,实际根本就没用到这个字段,实在不好意思,自己结案!要学好狐表,还得细研究代码,不能拿来主义。感谢狐爸以及帮助过我的前辈! http://www.foxtable.com/bbs/dispbbs.asp?BoardID =2&ID=79245&skin=0 |