以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于一人承担多角色权限管理  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=64696)

--  作者:爱相随
--  发布时间:2015/2/27 11:34:00
--  关于一人承担多角色权限管理

老师,一个人承担多个角色权限管理,下面代码是一个人在资金计划申报环节的角色是经办人,但在项目进度管理环节的角色却是部门负责人审核,现在要承担经办人角色,下面的代码提示红色部分代码有错,请老师帮助纠正,谢谢!!!

If e.Col.Name = "XZH" Then
    If User.Roles <> "部门负责人" AndAlso User.Roles NOT Like "%经办人%" Then
        If e.Row("TBDW") <> User.GROUP OrElse e.Row("TB") <> User.NAME OrElse e.Row("sbzgb") = True Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
            e.Cancel = True
        End If
    End If
Else
    If e.Row("TBDW") <> User.GROUP OrElse e.Row("TB") <> User.NAME OrElse e.Row("sbzgb") = True  Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
        e.Cancel = True
    End If
End If


--  作者:lsy
--  发布时间:2015/2/27 11:37:00
--  
一个用户,可以是任意多个角色,权限就是多角色权限的累加。
--  作者:爱相随
--  发布时间:2015/2/27 11:39:00
--  
以下是引用lsy在2015/2/27 11:37:00的发言:
一个用户,可以是任意多个角色,权限就是多角色权限的累加。

请老师帮助纠正一下我上面的代码,谢谢!

是需要用单引号吗,但单引号后里面的字变成灰色,也不行

[此贴子已经被作者于2015/2/27 11:41:18编辑过]

--  作者:Bin
--  发布时间:2015/2/27 11:41:00
--  
有个IsRole方法


--  作者:爱相随
--  发布时间:2015/2/27 11:46:00
--  
以下是引用Bin在2015/2/27 11:41:00的发言:
有个IsRole方法

改成这样也不行啊

If e.Col.Name = "XZH" Then
    If User.Roles <> "部门负责人" AndAlso User.Roles IsNot Like("%经办人%") Then
        If e.Row("TBDW") <> User.GROUP OrElse e.Row("TB") <> User.NAME OrElse e.Row("sbzgb") = True Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
            e.Cancel = True
        End If
    End If
Else
    If e.Row("TBDW") <> User.GROUP OrElse e.Row("TB") <> User.NAME OrElse e.Row("sbzgb") = True  Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
        e.Cancel = True
    End If
End If


--  作者:Bin
--  发布时间:2015/2/27 11:47:00
--  
晕.能不能看一眼我说的是什么,和静下心来看一下帮助
--  作者:爱相随
--  发布时间:2015/2/27 11:53:00
--  
以下是引用Bin在2015/2/27 11:47:00的发言:
晕.能不能看一眼我说的是什么,和静下心来看一下帮助

多角色用户我一个都没有用得上啊,还请老师耐心指导,我都按帮助学习,只是有些自学也不能快速理解啊。。。


--  作者:Bin
--  发布时间:2015/2/27 11:58:00
--  
那是因为你根本就没看,请你看一下我说的是什么,再看一下你写的是什么.
--  作者:爱相随
--  发布时间:2015/2/27 12:11:00
--  

If e.Col.Name = "XZH" Then
    If User.Roles <> "部门负责人" AndAlso User.Roles <> "经办人" Then
        If e.Row("XMGLDW") <> User.GROUP OrElse e.Row("htJBR") <> User.NAME OrElse e.Row("sbzgb") = True Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
            e.Cancel = True
        End If
    End If
Else
    If e.Row("XMGLDW") <> User.GROUP OrElse e.Row("htJBR") <> User.NAME OrElse e.Row("sbzgb") = True  Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
        e.Cancel = True
    End If
End If

这样代码是没有错的,如果一个人只是经办人或部门负责人,不管是经办人还是部门负责人,代码能正确执行,但如果一个人既是经办人,又是部门负责人,那就不执行。要怎样改写代码才可以呢

[此贴子已经被作者于2015/2/27 12:11:46编辑过]

--  作者:Bin
--  发布时间:2015/2/27 14:14:00
--  
你能不能先看一下我4楼的回复