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

解决方案 »

  1.   


    Private Sub Form_Load()
       TreeView1.Nodes.Add , , "C00", "三年一班"
       TreeView1.Nodes.Add , , "C01", "三年二班"
       
       
       TreeView1.Nodes.Add "C00", 4, "C0001", "美术小组"
       TreeView1.Nodes.Add "C01", 4, "C0101", "音乐小组"
       
       TreeView1.Nodes.Add "C0001", 4, "C000101", "张三"
       TreeView1.Nodes.Add "C0101", 4, "C010101", "王五"   For X = 1 To TreeView1.Nodes.Count
          TreeView1.Nodes.Item(X).Expanded = True
       Next X
    End Sub
      

  2.   

    你的数据库设立的不好。
    建立个parent列,self reference
      

  3.   

    我数据库改成这样的了
    上级编号   编号   名称
                00   三年一班
    00        0001  美术小组
    0001      000101 张三
                01    三年二班
    01        0101   音乐小组
    0101      010101  王五我的想法是动态生成一个树,我知道得有个KEY值控制,但就是想不明白该怎么控制了,请高手指点一下,摆脱了。
      

  4.   

    排序后添加不就完了的事,没那么复杂Dim conn As Connection
    Private Type CodeingRuleType
       ParentSize As Long
       MeSize As Long
    End 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 If
    End 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 = Nothing
    End Sub