做英文兼职的网站,上海正规seo公司,扬州网站优化,做盒饭的网站目的#xff1a;将数据库中的数据与树控件绑定背景#xff1a;我们想在树控件中显示销售客户的层级列表#xff0c;这个销售客户的分层是这样的#xff0c;先按“大区”#xff0c;再按“省份”#xff0c;最后到“客户”我们在数据库中建立了三个表#xff0c;字段如下… 目的将数据库中的数据与树控件绑定背景我们想在树控件中显示销售客户的层级列表这个销售客户的分层是这样的先按“大区”再按“省份”最后到“客户”我们在数据库中建立了三个表字段如下大区表大区ID大区名称省份表省份ID省份名称所属大区客户表客户ID客户名称所属省份这三个表互相建立了关系 1、新建一个窗体在窗体上放置两个控件一个是Treeview一个是Imagelist2、设置这两个控件的属性在这里和第一小时唯一的区别是我们在Imagelist控件的设置时导入了两个图标一个KEY为K1一个为K2原来树控件的Node图标是可以变化的我们准备某个项没有选中时的图标是一个没有打开的文件夹选中时是一个打开的文件夹以区别。3、编写代码如下 Private Sub Form_Load()* -----------------------------------------------------------------* 用数据库表(查询也一样)中数据填充树控件* ----------------------------------------------------------------- Dim Rec As New ADODB.Recordset Dim stRecQL As String Dim Item As Integer Dim i As Integer Dim nodindex As Node* -----------------------------------------------------------------* 定义各类* ----------------------------------------------------------------- 设置最顶级的爷* --------------------------- Set nodindex TreeView.Nodes.Add(, , 爷, 销售客户, K1, K2) nodindex.Sorted True* -----------------------------------------------------------------*这里的设置跟第一小时里基本是一样的*但最后多了一个K2的参数,K1代表的是未被选中时的图标,K2代表是被选中后的图标*仔细观察一下,你会发现选中和没选中的图标是不一样的,一个是一个文件夹,一个是一个打开的文件夹* ----------------------------------------------------------------- 设置第二级父* --------------------------- Rec.Open 大区表, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect For i 0 To Rec.RecordCount - 1 Set nodindex TreeView.Nodes.Add(爷, tvwChild, 父 Rec.Fields(大区ID), Rec.Fields(大区名称), K1, K2) nodindex.Sorted True Rec.MoveNext Next Rec.Close* -----------------------------------------------------------------*第一行意思是打开一个表去寻找数据(查询也是可以的)*关键在与Add参数的变化*大家看第三个参数,在第一小时里,这里是父1,这里用Rec.Fields(大区ID)来代替1,意思是用表的编号来代替手工编号*第四个参数也是一样,直接用表中的名称字段来取代原来我们手工的命名* ----------------------------------------------------------------- 设置第三级子* --------------------------- Rec.Open 省份表, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect For i 0 To Rec.RecordCount - 1 Set nodindex TreeView.Nodes.Add(父 Rec.Fields(所属大区), tvwChild, 子 Rec.Fields(省份ID), Rec.Fields(省份名称), K1, K2) nodindex.Sorted True Rec.MoveNext Next Rec.Close* -----------------------------------------------------------------*不用再解释了吧*要注意的是,定义第一个参数的时候,不是用父 Rec.Fields(大区ID),而是用父 Rec.Fields(所属大区)*这个意思是:用省份表中关联大区表的字段,而不是直接用大区表的ID* ----------------------------------------------------------------- 设置第四级孙* --------------------------- Rec.Open 客户表, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect For i 0 To Rec.RecordCount - 1 Set nodindex TreeView.Nodes.Add(子 Rec.Fields(所属省份), tvwChild, 孙 Rec.Fields(客户ID), Rec.Fields(客户名称), K1, K2) nodindex.Sorted True Rec.MoveNext Next Rec.Close * -----------------------------------------------------------------*到此你应该完全明白了* ----------------------------------------------------------------- End Sub 第二小时结束 第三小时将树控件与窗体结合我们做树控件当然不可能单单为了显示层级数据我们希望跟窗体结合当我们单击树控件中的某个客户时窗体上能相应的转到这个客户的资料。 目的将树控件与窗体结合1、我们还是沿用第二个小时里的例子但在建立窗体时将窗体的数据来源设为“客户表”并在窗体中放置好客户表的字段。2、写入如下代码 Private Sub Treeview_NodeClick(ByVal Node As Object)* -----------------------------------------------------------------*树控件的鼠标点击事件为NodeClick* -----------------------------------------------------------------Dim str As String* -----------------------------------------------------------------*定义一个筛选* -----------------------------------------------------------------If Node.Text 销售客户 Or Node.Key Like 父* Or Node.Key Like 子* Thenstr * -----------------------------------------------------------------*在第一小时里,我们说了Node有三个东西,图标,文本,索引值*文本就是text,索引值就是Key这里将就是说当我们点击爷,父或子层的时候,不筛选窗体*这个条件也可写成:If Node.key 爷 Or Node.Key Like 父* Or Node.Key Like 子* Then* -----------------------------------------------------------------Elsestr [客户名称] Node.Text End IfMe.Form.FilterOn TrueMe.Form.Filter str*按指定的条件进行窗体筛选End Sub 明白了吧所谓结合窗体实际不过是进行窗体筛选而已。第三小时结束5分钟也够了哈哈 学习很有乐趣但写文章却很无聊如果你通过这篇文章学会了树控件的基本使用跟个贴吧也好让我有点成就感。 转载于:https://www.cnblogs.com/ince/p/8983137.html