📄 employeepermissionform.frm
字号:
'* 输 入 参 数 :currentPosition - 当前的节点的位置编号""表示根节点 "00"第一级的第一个节点
'* currentNode - 当前的树节点 Nothing 表示根结点
'* 输 出 能 数 :无
'**************************************
Private Function ReadSubPermission(currentPosition As String, currentNode As Node)
Dim ret As Boolean ' 返回值
Dim recSet As ADODB.Recordset ' 数据集
Dim level As Integer ' 当前的树层次
Dim mNode As Node ' 节点
Set recSet = New ADODB.Recordset
level = Len(currentPosition) / 2 ' 取得当前层
ret = m_EmployeeDAO.PermissionFindSubAll(recSet, Trim(currentPosition))
If ret Then ' 找到权限
With recSet
Do While Not .EOF
If Trim(currentPosition) = "" Then
Set mNode = CreateLastNode(TreeView1)
Else
Set mNode = NewNode(TreeView1, currentNode) ' 新增结点
End If
mNode.text = Trim(recSet.Fields("name"))
mNode.Tag = Trim(recSet.Fields("permissionid"))
ReadSubPermission Trim(recSet.Fields("treePosition")), mNode
.MoveNext
Loop
End With
End If
recSet.Close
Set recSet = Nothing ' 把数据集设成空
End Function
'**************************************
'* 功 能 描 述 :根据用户的权限更改树节点的CHECK状态
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Function ModifyCheckState()
m_EmployeeDAO.show_employeepermission m_recordset, Trim(m_employeeId) '获得商品名称列表
With m_recordset
Do While Not .EOF
For i = 1 To TreeView1.Nodes.Count
If Trim(TreeView1.Nodes(i).Tag) = Trim(.Fields("权限ID")) Then
TreeView1.Nodes(i).Checked = True
End If
Next
.MoveNext
Loop
End With
m_recordset.Close
End Function
'**************************************
'* 功 能 描 述 :根据操作权限的编号找到操作权限对应的结点
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Function FindNode(permissionId As String) As Node
For i = 1 To TreeView1.Nodes.Count
If Trim(TreeView1.Nodes(i).Tag) = Trim(permissionId) Then
Set FindNode = TreeView1.Nodes(i)
End If
Next
End Function
'**************************************
'* 功 能 描 述 :员工权限数据处理函数
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub NewEmployee()
'
Dim ret As Boolean
For i = 1 To TreeView1.Nodes.Count
If TreeView1.Nodes(i).Checked = True Then
permissionId = TreeView1.Nodes(i).Tag
ret = m_EmployeeDAO.Newemployeepermission(m_recordset, m_employeeId, permissionId)
End If
Next
End Sub
'**************************************
'* 功 能 描 述 :清除界面上复选框里的所有内容
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub clear()
For i = 1 To TreeView1.Nodes.Count
TreeView1.Nodes(i).Checked = False
Next
End Sub
'**************************************
'* 功 能 描 述 :根据员工ID删除这个员工ID的所有员工权限记录
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub delete()
m_EmployeeDAO.Deleteemployeepermission m_recordset, _
m_employeeId
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set m_EmployeeDAO = Nothing
Set m_recordset = Nothing
Set m_permissionSet = Nothing
End Sub
'**************************************
'* 功 能 描 述 :改变节点的选择状态
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
If Node.Children > 0 Then
ChangeSubNodesState Node, Node.Checked
End If
End Sub
'**************************************
'* 功 能 描 述 :修改mNode 节点所有子节点的状态为 check
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Function ChangeSubNodesState(mNode As Node, Check As Boolean)
Dim subNode As Node ' 子节点
Dim i As Integer
Set subNode = mNode.Child.FirstSibling
For i = 1 To mNode.Children
subNode.Checked = Check
If subNode.Children > 0 Then
ChangeSubNodesState subNode, Check
End If
If i <> mNode.Children Then
Set subNode = subNode.Next
End If
Next i
End Function
'**************************************
'* 功 能 描 述 :在树中新增一个节点
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Function NewNode(tv As TreeView, parentNode As Node) As Node
Dim skey As String
Dim text As String
Dim iIndex As Integer
Dim oNodex As Node
iIndex = parentNode.Index
skey = GetNextKey(tv)
text = "新增节点"
Set oNodex = tv.Nodes.Add(iIndex, tvwChild, skey, text)
Set NewNode = oNodex
End Function
'**************************************
'* 功 能 描 述 :在Bom树中新增根结点
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Function CreateLastNode(tv As TreeView) As Node
Dim skey As String
skey = GetNextKey(tv)
Set CreateLastNode = tv.Nodes.Add(, tvwLast, skey, "Last " & skey)
End Function
'**************************************
'* 功 能 描 述 :判断节点是否有子节点
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Function hasChild(treeNode As Node) As Boolean
Dim Index As Integer
EXITSUB:
On Error GoTo CONTINUE:
Index = treeNode.Child.Index
hasChild = True
Exit Function
CONTINUE:
hasChild = False
End Function
'**************************************
'* 功 能 描 述 :取得树的下一个节点的键值
'* 输 入 参 数 :无
'* 输 出 能 数 :无
'**************************************
Private Function GetNextKey(tv As TreeView) As String
'Returns a new key value for each Node being added to the TreeView
'This algorithm is very simple and will limit you to adding a total of 999 nodes
'Each node needs a unique key. If you allow users to remove Nodes you can't use
'the Nodes count +1 as the key for a new node.
Dim sNewKey As String
Dim iHold As Integer
Dim i As Integer
On Error GoTo myerr
'The next line will return error #35600 if there are no Nodes in the TreeView
iHold = Val(tv.Nodes(1).Key)
For i = 1 To tv.Nodes.Count
If Val(tv.Nodes(i).Key) > iHold Then
iHold = Val(tv.Nodes(i).Key)
End If
Next
iHold = iHold + 1
sNewKey = CStr(iHold) & "_"
GetNextKey = sNewKey 'Return a unique key
Exit Function
myerr:
'Because the TreeView is empty return a 1 for the key of the first Node
GetNextKey = "1_"
Exit Function
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -