以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教按用户角色设置允许编辑的列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176792)

--  作者:13315253800
--  发布时间:2022/4/27 9:20:00
--  请教按用户角色设置允许编辑的列

蓝老师您好!再请教按用户角色设置允许编辑列的问题

假设用户张三有"提交"角色,李四有"审核"角色,王五有"批准"角色,我要实现只有张三可以编辑1、2、3列,只有李四可以编辑4、5、6列,只有王五可以编辑7、8、9列,其他用户不可以编辑1-9列,但可以编辑其他列如十以后的列,我用下面的代码,没能实现以上要求。结果是张三、李四、王五任何列都可编辑,其他用户不可编辑。敬请蓝老师指教

\'按用户的角色指定不可编辑的列

Dim Filter As String

Dim bj As String

If User.IsRole ("提交") Then      \'如果用户有提交角色

     Select Case e.Col.Name

            Case "第一列","第二列","第三列"

                e.Cancel = False       \'可以编辑

        End Select

ElseIf User.IsRole ("审核") Then     \'如果用户有审核角色

       Select Case e.Col.Name

            Case "第四列","第五列","第六列"

                e.Cancel = False       \'可以编辑

        End Select

ElseIf User.IsRole ("批准") Then     \'如果用户有批准角色

        Select Case e.Col.Name

            Case "第七列","第八列","第九列"

                e.Cancel = False     \'可以编辑用False

        End Select

Else

    e.Cancel = True  \'其他用户都不可编辑

End If


--  作者:有点蓝
--  发布时间:2022/4/27 9:59:00
--  

Select Case e.Col.Name
    
    Case "第一列", "第二列", "第三列"
        If User.IsRole ("提交") = False Then
            e.Cancel = True 
        End If
    Case "第四列", "第五列", "第六列"
        If User.IsRole ("审核") = False Then
            e.Cancel = True 
        End If
    Case "第七列", "第八列", "第九列"
        If User.IsRole ("批准") = False Then
            e.Cancel = True 
        End If
End Select

--  作者:13315253800
--  发布时间:2022/4/27 10:11:00
--  
好,我试试,谢谢蓝老师!
--  作者:13315253800
--  发布时间:2022/4/27 10:20:00
--  
蓝老师写的代码,太棒了!简洁、实用,满足了我的条件要求。再次谢谢!