Access快速开发平台--企业版平台权限授权保存按钮代码(快速保存)-麥田
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access开发平台


Access快速开发平台--企业版平台权限授权保存按钮代码(快速保存)

发表时间:2021/8/19 13:46:25 评论(0) 浏览(5419)  评论 | 加入收藏 | 复制
   
摘 要:企业版平台权限授权保存按钮代码(快速保存)。
正 文:
一、学员问题描述:

秦皇岛--一斗(541716710) 

在使用Access快速开发平台企业版中的“权限管理”功能,数据库放在服务器的SQLserver场景下,《授权》点一下,需要一分钟多。请问这个情况能提升解决授权速度吗?我用的是2.5.1版本的平台。如下图:

点击图片查看大图


二、解决方法:

把下面的代码放到”授权“按钮的单击事件过程里面,即可提升”授权“速度,如下图:



代码如下

Public Sub btnSave_Click()

    On Error GoTo ErrorHandler
    SetCursor ctWait
    
    Dim strSqlScripts As String
    Dim strSQL As String
    Dim rst As Object:
    Dim rstTmp As Object:
    
    If GetDatabaseConfig(dptDatabaseType) Like "*SQL Server*" Then
        strSqlScripts = "Delete FROM Sys_RolePermissions Where UserRole='" & Me.lstUserRole & "';" & vbCrLf
        
        strSQL = "Select ModuleID FROM SysLocalModules Where Allow<>0"
        Set rstTmp = CurrentDb.OpenRecordset(strSQL)
        Do Until rstTmp.EOF
            strSqlScripts = strSqlScripts & "Insert INTO Sys_RolePermissions(UserRole,ModuleID,FunctionID)" _
                          & " VALUES('" & Me.lstUserRole & "'," & rstTmp!ModuleID & ",0);" & vbCrLf
            rstTmp.MoveNext
        Loop
        rstTmp.Close
        
        strSQL = "Select ModuleID,FunctionID FROM SysLocalFunctions Where Allow<>0"
        Set rstTmp = CurrentDb.OpenRecordset(strSQL)
        Do Until rstTmp.EOF
            strSqlScripts = strSqlScripts & "Insert INTO Sys_RolePermissions(UserRole,ModuleID,FunctionID)" _
                          & " VALUES('" & Me.lstUserRole & "'," & rstTmp!ModuleID & "," & rstTmp!FunctionID & ");" & vbCrLf
            rstTmp.MoveNext
        Loop
        rstTmp.Close
        
        ServerRunSQL strSqlScripts
    Else
        ClientRunSQL "Delete FROM Sys_RolePermissions Where UserRole='" & Me.lstUserRole & "'"
        
        strSQL = "Select * FROM Sys_RolePermissions Where UserRole='" & Me.lstUserRole & "'"
        Set rst = ADO.OpenRecordset(strSQL, adLockOptimistic, CurrentProject.Connection)
        
        strSQL = "Select ModuleID FROM SysLocalModules Where Allow<>0"
        Set rstTmp = CurrentDb.OpenRecordset(strSQL)
        Do Until rstTmp.EOF
            rst.AddNew
            rst!UserRole = Me.lstUserRole
            rst!ModuleID = rstTmp!ModuleID
            rst!FunctionID = 0
            rst.Update
            rstTmp.MoveNext
        Loop
    
        strSQL = "Select ModuleID,FunctionID FROM SysLocalFunctions Where Allow<>0"
        Set rstTmp = CurrentDb.OpenRecordset(strSQL)
        Do Until rstTmp.EOF
            rst.AddNew
            rst!UserRole = Me.lstUserRole
            rst!ModuleID = rstTmp!ModuleID
            rst!FunctionID = rstTmp!FunctionID
            rst.Update
            rstTmp.MoveNext
        Loop
        rst.Close
    End If
    
    MsgBoxEx LoadString("Authorized successfully!"), vbInformation
    WriteOperationLog Me.Caption, Me.btnSave.Caption, Me.lstUserRole
    
ExitHere:
    Exit Sub
    
ErrorHandler:
    If RDPErrorHandler(Me.Name & ": Sub btnSave_Click()") Then
        Resume
    Else
        Resume ExitHere
    End If
End Sub

Access软件网交流QQ群(群号:198465573)
 
 相关文章
快速开发平台--获取当前登录名\获取当前用户名\获取当前操作员的代...  【红尘如烟  2013/5/13】
Access快速开发平台V1.7.2版--操作员只能看到自己录入的...  【缪炜  2014/9/5】
《离退休信息管理系统》自学Access快速开发平台为本部门开发的管...  【陈强  2018/5/13】
Access快速开发平台--权限管理窗体授权按钮、添加按钮、删除按...  【宏鹏  2020/6/3】
Access快速开发平台--操作用户只能看到自己本部门的数据功能示...  【宏鹏  2020/6/24】
Access快速开发平台企业版--如何链接SQL Server多个...  【金宇  2021/7/27】
Access快速开发平台--企业版升迁时出现错误代码#13 '/'...  【欧志华  2021/8/4】
Access快速开发平台企业版--如何读取同一台SQL Serve...  【金宇  2021/8/10】
常见问答
技术分类
相关资源
文章搜索
关于作者

麥田

文章分类

文章存档

友情链接