设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 16719|回复: 82
打印 上一主题 下一主题

[其它] [分享]将TreeView(视树)之应用简单化

[复制链接]
跳转到指定楼层
1#
发表于 2006-3-1 19:09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式





TreeView控件是个非常常用的控件,特别是在分层数据结构中采用TreeView控件显示是非常直观的。但是它的使用又比较的复杂,网上有很多关于怎样使用TreeView控件的文章和教程,都是讲方法的需要很长时间的摸索和学习。怎样更快捷的使用TreeView控件,而不必抱着厚厚的书本啃呢?这里提供了个加载TreeView控件的函数,只需要在使用TreeView控件的窗体的加载事件或打开事件中,加上一句调用该函数的语句就可以了。

当然该函数还有些局限性:只能使用来自一个表的数据,同时该数据表必需有3个必需的字段(字段的数据类型有一定的要求),适用于数据分层不确定的结构当中。

函数分为一个主函数,一个子函数,采用的是ADO和递归子函数加载子节点,孙节点……


调用示例:Call AddMyTree(xTree, "动物类别", "上级类别", "类别ID", "类别名称")

注意事项:xTree是控件名称,在调用函数时不能加引号

由于时间比较仓促,可能会有错误,请大家指正。

Function AddMyTree(ByVal objTree As Object, ByVal strTable As String, _
                   ByVal strFather As String, ByVal strChildren As String, _
                   ByVal strText As String)
'===============================================================================
'-函数名称:     AddMyTree
'-功能描述:     加载TreeView,使用时需要调用AddMyTreeChildren子函数
'-输入参数说明: 参数1: 必选 objTree As Object TreeView控件名称
'               参数2: 必选 strTable As String  TreeView控件数据来源的表名
'               参数3: 必选 strFather As String  父节点字段名称   字段类型为数字
'               参数4: 必选 strChildren As String  子节点字段名称  字段类型为自动编号
'               参数5: 必选 strText As String  节点文本字段的名称 字段类型为文本
'-返回参数说明:
'-使用语法示例: Call AddMyTree(xTree, "动物类别", "上级类别", "类别ID", "类别名称")
'-参考:
'-使用注意:     objTree 为TreeView控件名称,使用时不能加引号
'               strTable为数据表名称,不能使用SQL语句,但可以使用查询名称
'-兼容性:       2000,XP,2003 compatible
'-作者:         fan0217@163.com
'-更新日期:    2006-02-26
'===============================================================================
'On Error GoTo Err_AddMyTree
Dim conn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim strSQL As String
Dim nodCurrent As Node
Dim book As Variant
Dim strFind As String
'设置conn连接对象为当前打开的连接
Set conn = CurrentProject.Connection
'设置查询语句
strSQL = "SELECT * FROM [" & strTable
strSQL = strSQL & "] WHERE " & strFather & "=0;"
'设置记录集对象的内容,通过Open方法建立只读一个记录集
rst.Open strSQL, conn, adOpenStatic, adLockReadOnly
'使用循环语句
Do While Not rst.EOF
'向TreeView控件中载入数据
  Set nodCurrent = objTree.Nodes.Add(, , "a" & rst(strChildren), rst(strText), 1, 2)
    '调用子函数,加入子节点
    AddMyTreeChildren objTree, strTable, strFather, strChildren, strText, nodCurrent
    '移动指针
    rst.MoveNext
Loop
    rst.Close
    Set rst = Nothing
    Set conn = Nothing
Exit_AddMyTree:
         Exit Function
Err_AddMyTree:
      Set rst = Nothing
      Set conn = Nothing
         MsgBox Err.Description, vbCritical, "AddMyTree"
         Resume Exit_AddMyTree
End Function


Function AddMyTreeChildren(ByVal objTree As Object, ByVal strTable As String, _
                   ByVal strFather As String, ByVal strChildren As String, _
                   ByVal strText As String, nodBoss As Node)
'===============================================================================
'-函数名称:     AddMyTreeChildren
'-功能描述:     加载TreeView,为AddMyTree函数的子函数,使用时需要与AddMyTree配合使用
'-输入参数说明:
'-返回参数说明:
'-使用语法示例:
'-参考:
'-使用注意:     使用本函数时请保留函数信息内容
'-兼容性:       2000,XP,2003 compatible
'-作者:         fan0217@163.com
'-更新日期:    2006-02-26
'========================================================

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-3-1 19:32:00 | 只看该作者
不错,谢谢分享,收藏了
3#
发表于 2006-3-1 19:49:00 | 只看该作者
To fan0217:

先收藏,慢慢学习,感谢共享!
4#
 楼主| 发表于 2006-3-2 18:45:00 | 只看该作者
匆忙始终要犯错,不能完全加载数据。现在已经修正。请在顶楼查收。

[此贴子已经被作者于2006-3-2 19:26:02编辑过]

5#
发表于 2006-3-13 03:26:00 | 只看该作者
给你顶一下
6#
发表于 2006-3-20 20:08:00 | 只看该作者

kankan

kankan
7#
发表于 2006-3-20 20:08:00 | 只看该作者
kankan
8#
发表于 2006-3-20 20:09:00 | 只看该作者
kankan
9#
发表于 2006-3-20 22:46:00 | 只看该作者
看看
10#
发表于 2006-3-20 22:46:00 | 只看该作者
看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 15:20 , Processed in 0.082208 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表