使用TreeView加载数据

在VB程序设计中,TreeView控件常用于展示层次结构数据,如数据库中的目录树或班级信息。本文通过两种方法展示了如何利用TreeView控件结合Access数据库,将班级按年级和班级编号以层次结构呈现。第一种方法根据年级分组,再添加班级;第二种方法通过比较当前记录的年级来决定是否新建节点。这两种方法中,第二种方法在效率上更优。

TreeView控件在编制程序过程中用得比较多。正确的掌握和使用这个控件,可以很好的表示层次关系的数据。在数据库应用系统中,我们可以用TreeView来显示树形结构,如显示目录树、显示班级信息等等,有着很重要的作用

看看下面一个实际的问题:每个年度都有许多的班级,将这些数据层次表示

数据库:access

:Test

字段:bh(班级编号,文本,主键),nj(年级,文本)

功能:以层次关系表现出数据

测试数据:

bh

nj

41020

2001

41021

2001

41025

2003

41026

2003

41027

2003

41028

2003

 

 

添加TreeView控件,2个按钮

2个按钮分别用了两种方法显示数据。但是第二种方法明显优于第一种。

可以仔细的看代码

 

'引用microsoft activex data object 2.x library

Dim nddata As Node

Dim cnn As ADODB.Connection

Dim rs1 As New ADODB.Recordset

Dim rs2 As New ADODB.Recordset

 

Private Sub Command1_Click()

On Error Resume Next

Set nddata = TreeView1.Nodes.Add(, , "db", "班级信息")

nddata.Expanded = True

Dim intcount As Integer

Dim inttable As Integer

Dim intfield As Integer

Dim intfn As Integer

 

rs1.Open "select nj from test group by nj", cnn, 1, 3

inttable = rs1.RecordCount

 

Do While inttable <> intcount

        Set nddata = TreeView1.Nodes.Add("db", tvwChild, "F" & rs1.Fields("nj"), rs1.Fields("nj"))

        rs2.Open "select bh,nj from test where nj='" & rs1.Fields("nj") & "'", cnn, 1, 3

        intfield = rs2.RecordCount

            If intfield <> 0 Then

                intfn = 0

                    Do While intfield <> intfn

                        Set nddata = TreeView1.Nodes.Add("F" & rs1.Fields("nj"), tvwChild, "S" & rs2.Fields("bh"), rs2.Fields("bh"))

                        rs2.MoveNext

                        intfn = intfn + 1

                    Loop

            End If

            rs2.Close

    rs1.MoveNext

    intcount = intcount + 1

Loop

rs1.Close

End Sub

 

第二种方法

Private Sub Command2_Click()

On Error Resume Next

Set nddata = TreeView1.Nodes.Add(, , "db", "班级信息")

nddata.Expanded = True

rs1.Open "select * from test", cnn, 1, 3

 

Do While Not rs1.EOF

        If ca <> rs1.Fields("nj") Then

        Set nddata = TreeView1.Nodes.Add("db", tvwChild, "F" & rs1.Fields("nj"), rs1.Fields("nj"))

        ca = rs1.Fields("bb")

        End If

       

        Set nddata = TreeView1.Nodes.Add("F" & rs1.Fields("nj"), tvwChild, "S" & rs1.Fields("bh"), rs1.Fields("bh"))

    rs1.MoveNext

Loop

rs1.Close

End Sub

 

Private Sub Form_Load()

Set cnn = New ADODB.Connection

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:/csdn_vb/database/treeview的节点添加/1/test.mdb"

 

End Sub

 

Private Sub Form_Unload(Cancel As Integer)

Set con = Nothing

End Sub

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值