Foxtable(狐表)用户栏目专家坐堂 → 通过角色控制列编辑权限问题


  共有4316人关注过本帖树形打印复制链接

主题:通过角色控制列编辑权限问题

帅哥哟,离线,有人找我吗?
xnsiwei
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
通过角色控制列编辑权限问题  发帖心情 Post By:2022/2/11 11:07:00 [只看该作者]

通过角色控制列编辑权限问题,代码如下,但不然如愿,请版主帮看看

If User.IsRole("监测采样") = True  AndAlso User.IsRole("监测化验") = True  AndAlso User.IsRole("监测审核") = True  AndAlso User.IsRole("监测发布") = True Then
    If e.Col.Name = "采样时间"  AndAlso e.Col.Name = "采样地点" AndAlso e.Col.Name = "经度" AndAlso e.Col.Name = "纬度" AndAlso e.Col.Name = "检测项目" Then
        If User.IsRole("监测采样") = False Then
            e.Cancel = True
        End If
    End If
    If e.Col.Name = "检测限值"  AndAlso e.Col.Name = "检测结果" Then
        If User.IsRole("监测化验")  = False Then
            e.Cancel = True
        End If
    End If
    If e.Col.Name = "审核情况"  Then
        If User.IsRole("监测审核")  = False  Then
            e.Cancel = True
        End If
    End If
    If e.Col.Name = "发布情况"  Then
        If User.IsRole("监测发布")  = False  Then
            e.Cancel = True
        End If
    End If
Else
e.Cancel = True
End If

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/11 11:56:00 [只看该作者]

有什么问题?权限的处理逻辑或者说规则是什么?

 回到顶部
帅哥哟,离线,有人找我吗?
xnsiwei
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/11 14:25:00 [只看该作者]

角色:“监测采样” ,只能编辑"采样时间"   "采样地点"  "经度" "纬度"  "检测项目"四列,其它列不能编辑
角色:“监测化验”,只能编辑"检测限值"   "检测结果"两列,其它列不能编辑
角色:"监测审核",只能编辑 "审核情况" 一列,其它列不能编辑
角色: "监测发布",只能编辑"发布情况"  一列,其它列不能编辑
      

 回到顶部
帅哥,在线噢!
cd_tdh
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3203 积分:21289 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2022/2/11 14:41:00 [只看该作者]

方法一:DataColChanging事件

Select Case e.DataCol.Name
    Case "采样时间","采样地点","经度","纬度","检测项目"
        If User.Roles <> "监测采样" Then
            msgbox("你不是监测采样人员,没有编辑权限!" )
            e.Cancel = True
            Return
        End If
    Case "检测限值","检测结果"
        If User.Roles <> "监测化验" Then
            msgbox("你不是监测化验人员,没有编辑权限!" )
            e.Cancel = True
            Return
        End If
End Select

方法二:PrepareEdit事件:

Select Case e.Col.Name
    Case "采样时间","采样地点","经度","纬度","检测项目"
        If User.Roles <> "监测采样" Then
            'msgbox("你不是监测采样人员,没有编辑权限!" )
            e.Cancel = True
            Return
        End If
    Case "检测限值","检测结果"
        If User.Roles <> "监测化验" Then
            'msgbox("你不是监测化验人员,没有编辑权限!" )
            e.Cancel = True
            Return
        End If
End Select

看是不是你要的效果:

[此贴子已经被作者于2022/2/11 14:45:33编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/11 14:45:00 [只看该作者]

If User.Roles <> "监测采样" Then

改为

if User.IsRole("监测采样") = false then


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

 回到顶部
帅哥哟,离线,有人找我吗?
xnsiwei
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/11 15:55:00 [只看该作者]

谢谢版主
搞定
Select Case e.Col.Name
    Case "采样时间","采样地点","经度","纬度","监测项目","备注","监测类别","监测项目","监测标准"
        If User.isRole("监测采样") = False Then '不是监测采样人员,没有编辑权限
            e.Cancel = True
            Return
        End If
    Case "检测限值","检测结果","备注"
        If User.isRole("监测化验" ) = False Then '不是监测化验人员,没有编辑权限
            e.Cancel = True
            Return
        End If
    Case "审核情况","备注"
        If User.isRole("监测审核" ) = False Then '不是审核人员,没有编辑权限
            e.Cancel = True
            Return
        End If
    Case "发布情况"
        If User.isRole("监测发布" ) = False Then '不是监测化验人员,没有编辑权限
            e.Cancel = True
            Return
        End If
    Case "编号","超标倍数","采样日志","监测日志","审核日志","发布日志"
        If User.isRole("超级管理员" ) = False Then '不是超级管理员,没有编辑权限
            e.Cancel = True
            Return
        End If
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/11 16:09:00 [只看该作者]

有重复的列是有问题的,看看:http://www.foxtable.com/webhelp/topics/2242.htm

 回到顶部
帅哥哟,离线,有人找我吗?
xnsiwei
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/11 20:59:00 [只看该作者]

好的,谢谢,马上修正

 回到顶部