表和列的权限管理(简称权限管理)和菜单按钮的权限管理(简称菜单管理)可以通过表格+代码的形式,实现动态管理,权限明了、代码简单,修改权限也无需重新修改代码、发布项目,用户也无需升级系统,非常高效。
那么,所有表的加载条件(即根据不同的角色加载不同的行),是否也可以通过表格+代码的形式,实现动态管理?
现在AfterOpenProject的代码如下:
With DataTables("项目管理")
Select Case _userroles
Case "一般人员"
.loadFilter = "[项目经理] = '" & _username & "'or [借款人] = '" & _username & "'"
Case "部门干事","部门领导","体系管理"
.LoadFilter = "[部门名称] In (" & _usergroup & ")"
Case "部门会计"
.LoadFilter = "会计核算部门 In (" & _usergroup & ") Or 部门名称 In (" & _usergroup & ")"
Case "财务领导","生产领导","公司领导","合同管理","产值管理","开发者","管理者"
.LoadFilter = ""
Case "审核人员","担保管理","物业管理"
.loadFilter = "[_Identify] Is null"
End Select
End With
若想增加“加载管理”表(有序号、表名、角色、加载条件4列),实现动态管理,用下列代码:
Dim drs As List (of DataRow)
Dim dr As DataRow
Dim role As String = "'%" & _userroles & "%'"
Dim code As String
drs = DataTables("加载管理").SQLSelect("角色名称 like " & role,"","序号")
For Each dr In drs
functions.remove("loadstr") '必须先删除
code = "dim str As String =" & dr("加载条件") & vbcrlf
code = code & "return str"
functions.add("loadstr",code)
functions.complie()
DataTables(dr("表名")).LoadFilter = functions.execute("loadstr")
Next
[此贴子已经被作者于2018/5/29 15:38:43编辑过]