四、在全局代码中定义两个变量:
Public _UserName As String
Public _UserGroup As String
_UserName用户保存当前登录用户的名称,_UserGroup用于保存该用户的分组。
……
总结
经过上述10个步骤的设计,我们已经建立了自己的用户管理和登录系统,用户登录后,用户名保存在全局变量_User中,用户分组保存在全局变量_UserGroup中。
我们只需对原来的权限代码稍作修改,即可适用自定义的用户管理系统,例如原来的代码为:
If User.Group = "经理" Then
DataTables("表A").AllowEdit = True
Else
DataTables("表A").AllowEdit = False
End If
现在只需改为:
If _UserGroup = "经理" Then
DataTables("表A").AllowEdit = True
Else
DataTables("表A").AllowEdit = False
End If
可以看出,自定义的用户管理系统,在应用上和内置的不会有任何差别。
不过使用自定义用户管理系统的时候,需要注意 事件触发顺序,由于自定义的用户登录窗口是在AfterOpenProject事件中打开,意味着在此事件之前触发执行的事件,是不能使用_UserName和_UserGroup变量的。
例如有的用户希望使用动态加载功能,在用户登录后,订单表只加载业务员为登录用户的订单,所有在项目事件BeforeLoadInnerTable设置了代码:
If e.DataTableName = "订单" Then
e.Filter = "业务员 = '" & _UserName & "'"
End If