Dim tnode As Node txtsql = "select 字段 from 表名" rs.Open txtsql, cn, 3,2 Set tnode = TreeView2.Nodes.Add(, , "root", "根节点") If Not rs.EOF Then Do While Not rs.EOF Set tnode = TreeView1.Nodes.Add("root", tvwChild, , rs!字段) rs.MoveNext Loop tnode.EnsureVisible End If rs.Close
一个地区分级显示的例子表的结构: 01 某市 0101 某市的地区1 0102 某市的地区2 010201地区2的乡镇1绘制的方法,利用编码的递归:Option ExplicitDim RsTrv(5) As ADODB.RecordsetDim Rs As ADODB.Recordset ''定义动态集Dim Rs1 As ADODB.RecordsetDim i As IntegerDim R As IntegerDim Nodx As Node'*****************用于刷新trv控件****************** ' 需要定义全局变量k和l * '**************************************************Public Sub FreTrv()Trv.Nodes.Clear ' 'K = 0 ''定义动态集'L = "0" ''定义开始的号码" ''先绘制第一个节点 Set Nodx = Trv.Nodes.Add(, , "L" & "0", "某市") Nodx.Image = 1 Call WriteNode("", 0, "L" & "0")End Sub '************************************************** ''****************用于绘制节点********************* ' 需要上级单位的编码 * '************************************************** Public Sub WriteNode(ByVal l As String, ByVal S As Integer, Ssdq As String) Dim k As Integer k = S + 1 Set RsTrv(k) = New ADODB.Recordset Sql = "select * from jgdj where jgbm like '" & l & "%' and djbm like '0%' and len(jgbm)=(" & Len(l) & "+2)" RsTrv(k).Open Sql, Cnns, adOpenForwardOnly, adLockReadOnly If RsTrv(k).EOF Then ''当没有数据存在的时候 RsTrv(k).Close Set RsTrv(k) = Nothing Exit Sub Else ''当有记录存在的时候 While Not RsTrv(k).EOF '''绘制节点 Set Nodx = Trv.Nodes.Add(Ssdq, tvwChild, "L" & RsTrv(k)!Jgbm, RsTrv(k)!jgmc) Nodx.Image = k ''进行递规 Call WriteNode(RsTrv(k)!Jgbm, k, "L" & RsTrv(k)!Jgbm)
'''绘制完毕 RsTrv(k).MoveNext Wend End If RsTrv(k).Close Set RsTrv(k) = Nothing
End Sub
Public Sub LoadtreData() Dim NodeList As Node Dim i As Integer
Set frmMain.TreeView1.ImageList = Me.ImageList1
With TreeView1.Nodes .Clear
Set NodeList = .Add(, , "Root", "All Class", 1) ' --the frist "All Class" NodeList.Expanded = True NodeList.Tag = "Root" NodeList.Selected = True
If Rs.State <> adStateClosed Then Rs.Close Rs.Open "Select distinct Class from People", Conn, adOpenKeyset, adLockPessimistic
For i = 1 To Rs.RecordCount Set NodeList = .Add("Root", tvwChild, "S" & Rs("class"), Rs("Class"), 1) '--the Second "Class" NodeList.Tag = "Class" Rs.MoveNext Next i
If Rs.State <> adStateClosed Then Rs.Close Rs.Open "Select * from People", Conn, adOpenKeyset, adLockPessimistic
For i = 1 To Rs.RecordCount Set NodeList = .Add("S" & Rs("class"), tvwChild, "Z" & Rs("ID"), Rs("Name"), GetSex(Rs("Sex") & "")) '--the third "People" NodeList.Tag = "People" Rs.MoveNext Next i End With End Sub
txtsql = "select 字段 from 表名"
rs.Open txtsql, cn, 3,2
Set tnode = TreeView2.Nodes.Add(, , "root", "根节点")
If Not rs.EOF Then
Do While Not rs.EOF
Set tnode = TreeView1.Nodes.Add("root", tvwChild, , rs!字段)
rs.MoveNext
Loop
tnode.EnsureVisible
End If
rs.Close
01 某市
0101 某市的地区1
0102 某市的地区2
010201地区2的乡镇1绘制的方法,利用编码的递归:Option ExplicitDim RsTrv(5) As ADODB.RecordsetDim Rs As ADODB.Recordset ''定义动态集Dim Rs1 As ADODB.RecordsetDim i As IntegerDim R As IntegerDim Nodx As Node'*****************用于刷新trv控件******************
' 需要定义全局变量k和l *
'**************************************************Public Sub FreTrv()Trv.Nodes.Clear
'
'K = 0 ''定义动态集'L = "0" ''定义开始的号码"
''先绘制第一个节点
Set Nodx = Trv.Nodes.Add(, , "L" & "0", "某市")
Nodx.Image = 1
Call WriteNode("", 0, "L" & "0")End Sub
'**************************************************
''****************用于绘制节点*********************
' 需要上级单位的编码 *
'**************************************************
Public Sub WriteNode(ByVal l As String, ByVal S As Integer, Ssdq As String)
Dim k As Integer
k = S + 1
Set RsTrv(k) = New ADODB.Recordset
Sql = "select * from jgdj where jgbm like '" & l & "%' and djbm like '0%' and len(jgbm)=(" & Len(l) & "+2)"
RsTrv(k).Open Sql, Cnns, adOpenForwardOnly, adLockReadOnly
If RsTrv(k).EOF Then ''当没有数据存在的时候
RsTrv(k).Close
Set RsTrv(k) = Nothing
Exit Sub
Else ''当有记录存在的时候
While Not RsTrv(k).EOF
'''绘制节点
Set Nodx = Trv.Nodes.Add(Ssdq, tvwChild, "L" & RsTrv(k)!Jgbm, RsTrv(k)!jgmc)
Nodx.Image = k
''进行递规
Call WriteNode(RsTrv(k)!Jgbm, k, "L" & RsTrv(k)!Jgbm)
'''绘制完毕
RsTrv(k).MoveNext
Wend
End If
RsTrv(k).Close
Set RsTrv(k) = Nothing
End Sub
Dim NodeList As Node
Dim i As Integer
Set frmMain.TreeView1.ImageList = Me.ImageList1
With TreeView1.Nodes
.Clear
Set NodeList = .Add(, , "Root", "All Class", 1) ' --the frist "All Class"
NodeList.Expanded = True
NodeList.Tag = "Root"
NodeList.Selected = True
If Rs.State <> adStateClosed Then Rs.Close
Rs.Open "Select distinct Class from People", Conn, adOpenKeyset, adLockPessimistic
For i = 1 To Rs.RecordCount
Set NodeList = .Add("Root", tvwChild, "S" & Rs("class"), Rs("Class"), 1) '--the Second "Class"
NodeList.Tag = "Class"
Rs.MoveNext
Next i
If Rs.State <> adStateClosed Then Rs.Close
Rs.Open "Select * from People", Conn, adOpenKeyset, adLockPessimistic
For i = 1 To Rs.RecordCount
Set NodeList = .Add("S" & Rs("class"), tvwChild, "Z" & Rs("ID"), Rs("Name"), GetSex(Rs("Sex") & "")) '--the third "People"
NodeList.Tag = "People"
Rs.MoveNext
Next i
End With
End Sub