⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 employeepermissionform.frm

📁 即时通讯
💻 FRM
📖 第 1 页 / 共 2 页
字号:
'*    输 入 参 数 :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 + -