请问:vb treeview 有关问题,库中的无限子节点怎么分层读取
请教大虾:vb treeview 问题,库中的无限子节点如何分层读取?
数据库结构:
编号 名称
a001 学校(根类)
+a001001 小学(爷类)
--a001001001 中心小学(父类)
----a001001001001 某甲分校(子类)
------a001001001002 某乙分校(子类)
--------a001001001001001 语文组(孙类)
--------a001001001001002 数学组(孙类)
----------a001001001001002001 陈老师(曾孙类)
----------a001001001001002002 李老师(曾孙类)
+a001001002 第二小学
----a001001002001 语文组
+a001001003 第三小学
+a001002 中学
+a001003 大学
------解决方案--------------------
看你1楼的例子,学校编号直接是 "a001",没有区镇的前缀。
把前缀加上去,两个表合并记录,就组成了我11楼中的层次表。
------解决方案--------------------
其实不需要借助Collection排序的,我想复杂了,直接插入到Treeview里面就OK了。
数据库结构:
编号 名称
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
------解决方案--------------------
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)