黄师父的“分限级分类树型控件源代码”是一个关于TreeView的经典例程,不过黄师父提供的例程中只有添加和删除没有修改,在用的时候常常感觉很不方便,现参照黄师父原有的代码写了一段修改代码如下,表结构和窗体不变:
'==========================================
'用法:editCARGOTYPE("F030货位管理", "T030货位管理")
'说明:"F030货位管理"为树控件所在的窗体,"T030货位管理"为树控件的数据表
'==========================================
Public Function editCARGOTYPE(FL As String, FLB As String) 'FL为TreeView所在窗体的窗体名,FLB为需要增加数据的表名
Dim strCARGOTYPE_NO As String '过程变量
Dim newCargoTypeName As String '过程变量
Dim strSQL As String
Dim rst As DAO.Recordset
With Forms(FL)!TreeView0
strCARGOTYPE_NO = Forms(FL)!TreeView0.SelectedItem.key
If strCARGOTYPE_NO = "NO.1" Then '判断是否是顶层
MsgBox "不能修改顶层节点!", vbQuestion, FL
Exit Function
End If
newCargoTypeName = InputBox("请输新的分类名称", FL) '输入对话框
Debug.Print strCARGOTYPE_NO
If Len(newCargoTypeName) = 0 Then Exit Function '如果输入对话框输入的长度为0就结束过程
strCARGOTYPE_NO = right(strCARGOTYPE_NO, Len(strCARGOTYPE_NO) - 3)
On Error Resume Next
DoCmd.SetWarnings False
DoCmd.RunSQL "Update " & FLB & " set CARGOTYPE_NAME='" & newCargoTypeName & "' where CARGOTYPE_NO='" & [strCARGOTYPE_NO] & "';"
MsgBox "分类修改成功!", vbOKOnly, "提示:"
Call Forms(FL).Form_Load '重新加载数控件的数据,以重新将光标指向修改后的节点
'须将Private Sub Form_Load()改成Public Sub Form_Load()
Forms(FL)!TreeView0.Nodes("NO." & strCARGOTYPE_NO).Selected = True
DoCmd.SetWarnings False
If Err.Number Then Exit Function '保证数据库更新成功
End With
End Function