【VBA树控件学习三】新增树TreeView节点
哈喽,手机边亲爱的你还好吗?大家新快乐!
今天,我接着给大家分享一下treeview。这次我们要慢慢的加大难度了,之前树上显示的数据都是提前录入好的,显然是不够合理,那接下去我们就要给树做个新增节点的功能,好的,废话不多说,我们直接上干货。
01、建窗体
这次我们就不需要新建的表的,还是沿用之前的那张表,如果你是刚关注我的用户,点击这个地址就行了:
这次,我们需要在原来的窗体上添加一个新增按钮,用于打开新增窗体,如下图,按钮的名称为:btnAdd
接下去我们需要添加一个新的窗体,窗体名称保存为:frmAdd。在新增窗体上添加几个控件,一个组合框,一个文本框,两个按钮,如下图
组合框的名称:ProductParentID,行来源为:SELECT tblProduct.ProductID, tblProduct.ProductName FROM tblProduct;
文件框名称为:ProductName
保存按钮的名称:btnSave
取消按钮的名称:btnClose
02、添加代码
首先,我们先添加打开新增窗体的代码
Private Sub btnAdd_Click()
DoCmd.OpenForm "frmAdd", acNormal
End Sub
接下去就是新增窗体上的代码,一个是保存按钮的代码,一个是取消按钮的代码,代码不复杂,就是在正常的新增时,自动生成相应的编号,代码什么意思,具体的我们在视频中讲解。
'取消按钮
Private Sub btnClose_Click()
DoCmd.Close acForm, Me.Name
End Sub
'保存按钮
Private Sub btnSave_Click()
'判断不能为空
If IsNull(Me.ProductName) Then
MsgBox "产品名称不能为空。", vbExclamation
Me.ProductName.SetFocus
Exit Sub
End If
Dim rst As Object ' DAO.Recordset
Dim strProductID As String
Dim strWhere As String
'判断上级键值是否为空
If Not IsNull(Me.ProductParentID) Then
strWhere = "ProductParentID='" & Me.ProductParentID & "'"
Else
strWhere = "ProductParentID is null"
End If
'取到上级键值的最大值
strProductID = Nz(DMax("ProductID", "tblProduct", strWhere), "")
'生成编号
strProductID = Me!ProductParentID & Format(Val(Right(strProductID, 4)) + 1, "0000")
' Debug.Print strProductID
Set rst = CurrentDb.OpenRecordset("tblProduct", 2) '打开记录集
rst.AddNew
rst!ProductParentID = Me!ProductParentID
rst!ProductName = Me!ProductName
rst!ProductID = strProductID
rst.Update
MsgBox "保存成功。", vbInformation
Form_frmTreeView.Form_Load '树重新加载一下
Me.ProductName = Null
Me.ProductParentID = Null
Me.ProductParentID.RowSource = Me.ProductParentID.RowSource '刷新
rst.Close
Set rst = Nothing
End Sub
最后还一步,非常关键的操作,就是把树控件加载事件的Private 改成Public,如果未修改,则刷新会报错。
03、运行测试
最后,就是运行测试了。
END
从事access开发多年,喜欢access做一些小东西,分享一些小经验
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义