以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 多个功能区不同功能组的权限代码要怎么控制 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=94663)
|
-- 作者:k931931
-- 发布时间:2016/12/29 9:47:00
-- 多个功能区不同功能组的权限代码要怎么控制
此主题相关图片如下:目录授权.jpg
大神们,帮助提供了一个功能区的访问代码,如果有两个功能区或者多个功能这个代码要怎么改变呢
If Functions.Execute("ShouQuan","订单管理","批准订单") Then \'用于批准订单的代码 End
If
再例如判断用户是否具备生产管理分组的全部权限:
If Functions.Execute("ShouQuan","生产管理","")
Then \'代码 End If
|
-- 作者:有点色
-- 发布时间:2016/12/29 9:50:00
--
没理解你的问题,请举例说明什么意思。
|
-- 作者:k931931
-- 发布时间:2016/12/29 10:52:00
--
如图所示,工作菜单2, 此主题相关图片如下:1-2.jpg 怎么样去设置?
代码如下: If Functions.Execute("ShouQuan","业务管理","采购订单") Then Forms("采购订单").open() End If
|
-- 作者:有点色
-- 发布时间:2016/12/29 10:58:00
--
改一下自定义函数的代码
If User.Type <> UserTypeEnum.User Then \' 如果是开发者或者管理员 Return True \'则具备所有权限 End If Dim dt As DataTable = DataTables("授权") Dim dr As DataRow If Args(1) = "" Then \'首先判断分组的授权用户是否包括此用户或此用户所属的分组 dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 Is Null" ) If dr Is Nothing Then MessageBox.show("不存在名为""" & args(0) & "分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) Return False End If If dr.IsNull("用户") = False Then Dim nms() As String = dr("用户").Split(",") For Each nm As String In nms If nm = User.Group OrElse nm = User.Name Then \'如果授权用户包括登录用户所属的分组或其用户名 Return True \'返回True End If Next End If Return False End If \'然后判断权限的授权用户是否包括此用户或此用户所属的分组
dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 = \'" & args(1) & "\'") If dr Is Nothing Then MessageBox.show("不存在名为""" & args(1) & "权限!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) Return False End If If dr.IsNull("用户") = False Then Dim nms() As String = dr("用户").Split(",") For Each nm As String In nms If nm = User.Group OrElse nm = User.Name Then \'如果授权用户包括登录用户所属的分组或其用户名 Return True \'返回True End If Next End If Return False
|
-- 作者:k931931
-- 发布时间:2016/12/29 12:54:00
--
程序没有报错,但是代码没有运行成功,请看附件(附件一直无法上传)
[此贴子已经被作者于2016/12/29 12:55:40编辑过]
|
-- 作者:有点色
-- 发布时间:2016/12/29 13:03:00
--
你要用对应的用户登录进去,才能测试的。
你弹出一下msgbox(user.name)看一下,是不是对应的用户。
|
-- 作者:k931931
-- 发布时间:2016/12/29 13:30:00
--
此主题相关图片如下:23.jpg
此主题相关图片如下:22.jpg
此主题相关图片如下:21.jpg 奇怪了,我明明用自己定义的账号登录,怎么进入系统就变成了系统菜单下的账号呢,不解 有办法按照自己定义的账号登录吗?
[此贴子已经被作者于2016/12/29 14:30:58编辑过]
|
-- 作者:有点色
-- 发布时间:2016/12/29 14:38:00
--
改一下
If User.Type <> UserTypeEnum.User Then \' 如果是开发者或者管理员 Return True \'则具备所有权限 End If Dim dt As DataTable = DataTables("授权") Dim dr As DataRow If Args(1) = "" Then \'首先判断分组的授权用户是否包括此用户或此用户所属的分组 dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 Is Null" ) If dr Is Nothing Then MessageBox.show("不存在名为""" & args(0) & "分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) Return False End If If dr.IsNull("用户") = False Then Dim nms() As String = dr("用户").Split(",") For Each nm As String In nms If nm = _UserGroup OrElse nm = _username Then \'如果授权用户包括登录用户所属的分组或其用户名 Return True \'返回True End If Next End If Return False End If \'然后判断权限的授权用户是否包括此用户或此用户所属的分组
dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 = \'" & args(1) & "\'") If dr Is Nothing Then MessageBox.show("不存在名为""" & args(1) & "权限!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) Return False End If If dr.IsNull("用户") = False Then Dim nms() As String = dr("用户").Split(",") For Each nm As String In nms If nm = _UserGroup OrElse nm = _username Then \'如果授权用户包括登录用户所属的分组或其用户名 Return True \'返回True End If Next End If Return False
|
-- 作者:k931931
-- 发布时间:2016/12/29 15:04:00
--
非常感谢,现在测试,已经OK了
|
-- 作者:15177757041
-- 发布时间:2017/8/30 20:08:00
--
我也是想问同样的问题
|