读书人

VB treeview 遍历有关问题

发布时间: 2012-01-20 18:53:53 作者: rapoo

VB treeview 遍历问题
我的数据库是这样的
编号 名称
00 三年一班
0001 美术小组
000101 张三
01 三年二班
0101 音乐小组
010101 王五
规则是这样的:张三属于美术小组,美术小组属于三年一班。
编号是张三的编号前二位是班级编号,中间两位是小组编号,最后两位是个人编号。小组编号是前两位是班级编号,后两位是这个小组编号。
想通过treeview生成这样一棵树
三年一班
美术小组
张三
三年二班
音乐小组
王五
请问该如何做,请高手指点一下。


[解决办法]
排序后添加不就完了的事,没那么复杂

VB code
Dim conn As ConnectionPrivate Type CodeingRuleType   ParentSize As Long   MeSize As LongEnd TypePrivate Sub Command1_Click()   Dim rs As New Recordset   Dim rsRecordCount As Long   Dim CodeingRule As String   Dim TempArray() As String   Dim Rule() As CodeingRuleType   Dim RuleSize As Long   Dim CodeingSize As Long   Dim X As Long   '分析你的编码规则   CodeingRule = "**.**.**"       '你的编码规则   TempArray = Split(CodeingRule, ".")   RuleSize = UBound(TempArray)   ReDim Rule(RuleSize)   For X = 0 To RuleSize      If X = 0 Then         Rule(X).MeSize = Len(TempArray(X))         Rule(X).ParentSize = 0      Else         Rule(X).MeSize = Len(TempArray(X)) + Rule(X - 1).MeSize         Rule(X).ParentSize = Rule(X - 1).MeSize      End If   Next X      '开始数据处理   rs.Open "Select Count(*) As C From 表", conn, 3, 3   rsRecordCount = rs!C   rs.Close   If rsRecordCount > 0 Then      rs.Open "Select * From 表 Order By Len(编号),编号", conn, 3, 3      For X = 1 To rsRecordCount         If Len(rs!编号) = Rule(0).MeSize Then            TreeView1.Nodes.Add , , "C" & rs!编号, rs!名称         Else            '查询级别            CodeingSize = Len(rs!编号)            For Y = 1 To RuleSize               If CodeingSize = Rule(Y).MeSize Then                  Exit For               End If            Next Y            TreeView1.Nodes.Add "C" & Left(rs!编号, Rule(Y).ParentSize), 4, "C" & rs!编号, rs!名称         End If         If X < rsRecordCount Then rs.MoveNext      Next X      rs.Close   End IfEnd SubPrivate Sub Form_Load()   Set conn = New Connection   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb"End SubPrivate Sub Form_Unload(Cancel As Integer)   conn.Close   Set conn = NothingEnd Sub 

读书人网 >VB

热点推荐