请问:vb treeview 有关问题,库中的无限子节点怎么分层读取

请教大虾:vb treeview 问题,库中的无限子节点如何分层读取?
数据库结构:
         编号                  名称
a001                                             学校(根类)
+a001001                                   小学(爷类)
--a001001001                           中心小学(父类)
----a001001001001                 某甲分校(子类)
------a001001001002              某乙分校(子类)
--------a001001001001001     语文组(孙类)
--------a001001001001002     数学组(孙类)
----------a001001001001002001 陈老师(曾孙类)
----------a001001001001002002 李老师(曾孙类)


+a001001002                          第二小学
----a001001002001                语文组
+a001001003                         第三小学

+a001002                               中学

+a001003                               大学 


Reco1.open "Select * From bm2 where b1=" & ids & " order by len(b2) asc", conn, 1, 1
If Not Reco1.EOF Then
  While Not Reco1.EOF
    b2 = Reco1("b2")
    b1 = Reco1("b1")
   For tt = 0 Tosu
    If tt = 1 Then
          Set nodeindex = TreeView1.Nodes.Add("key" & ids, tvwChild, "key" & b2, Reco1("b3"), 1, 2)
     Else
          ????????????????????这里程序怎么处理?
     End If
      nodeindex.Sorted = True
    Next tt
   Reco1.MoveNext
  Wend
 End If
Reco.MoveNext
Wend

------解决方案--------------------
看你1楼的例子,学校编号直接是 "a001",没有区镇的前缀。
把前缀加上去,两个表合并记录,就组成了我11楼中的层次表。
WITH 层次表(编号,名称)
AS (
SELECT 编号,名称
  FROM 第一个表
UNION ALL
SELECT T2.编号+T1.编号 编号, T1.名称
  FROM 第二个表 T2
  JOIN 第一个表 T1
    ON T2.b1 = T1.ID
)
--这里接11楼的SQL

------解决方案--------------------
请问:vb treeview 有关问题,库中的无限子节点怎么分层读取 其实不需要借助Collection排序的,我想复杂了,直接插入到Treeview里面就OK了。


    Dim conn As New ADODB.Connection
    conn.Open "……"
    
    Dim rs1 As New ADODB.Recordset
    Dim rs2 As New ADODB.Recordset

    Dim xNode As Node
    Dim xx As Long
    
    'bm1表字段:id,a1
    'bm2表字段:编号,名称,b1  其中b1与bm1表id关联

    rs1.Open "Select * From bm1 order by id desc", conn, 1, 1
    While Not rs1.EOF
        Set xNode = TreeView1.Nodes.Add
        xNode.Key = "r" & rs1.Fields("id")
        xNode.Text = rs1.Fields("a1")
        xNode.Image = 1
        xNode.SelectedImage = 2
        Set xNode = Nothing

        rs2.Open "select * from bm2 where b1=" & rs1.Fields("id") & " order by len(编号) asc,编号 asc", conn, 1, 1
        While Not rs2.EOF
            If Len(rs2.Fields("编号")) = 4 Then
                Set xNode = TreeView1.Nodes.Add("r" & rs1.Fields("id"), tvwChild)