Foxtable(狐表)用户栏目专家坐堂 → 某列的编辑权限


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

主题:某列的编辑权限

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


加好友 发短信
等级:小狐 帖子:345 积分:2852 威望:0 精华:0 注册:2018/2/3 10:48:00
某列的编辑权限  发帖心情 Post By:2025/4/29 21:53:00 [只看该作者]

分部分对表格的编辑授权,如果是工程管理部,只有经理才能编辑其中的两列,其他的都没有权限进行编辑。在afterOpenProjec中如下代码,经理也是全部不能编辑。如何修改?

if   then   
ElseIf User.Group = "工程管理部" Then
        DataTables("合同台账").AllowEdit = False
        Tables("合同台账").AllowEdit = False
        If User.IsRole("经理") Then
            DataTables("合同台账").DataCols("项目经理").AllowEdit = True
            Tables("合同台账").Cols("项目经理").AllowEdit = True
            DataTables("合同台账").DataCols("项目管理人员").AllowEdit = True
            Tables("合同台账").Cols("项目管理人员").AllowEdit = True 
        End If
end if 


startedit事件如下,也不起作用。
Select Case e.Col.Name
    Case "审核", "项目经理", "项目管理人员"
        If User.Group = "工程管理部" AndAlso User.IsRole("经理") = True Then 
            e.Cancel = False 
        End If
End Select




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


加好友 发短信
等级:超级版主 帖子:113652 积分:578803 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/29 22:23:00 [只看该作者]

放到PrepareEdit事件http://www.foxtable.com/webhelp/topics/2255.htm

Select Case e.Col.Name
    Case "审核", "项目经理", "项目管理人员"
        If User.Group <> "工程管理部" orelse User.IsRole("经理") = falseThen 
            e.Cancel = true
        End If
End Select

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


加好友 发短信
等级:小狐 帖子:345 积分:2852 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2025/4/30 9:53:00 [只看该作者]

蓝老师,在PrepareEdit事件里试过,另外你这权限逻辑跟我想的不一样,是其他部门的权限另外授予(可以编辑),只有工程管理部除了经理能编辑指定列,其他的工程管理部人员全部不能编辑。
以下是引用有点蓝在2025/4/29 22:23:00的发言:
放到PrepareEdit事件http://www.foxtable.com/webhelp/topics/2255.htm

Select Case e.Col.Name
    Case "审核", "项目经理", "项目管理人员"
        If User.Group <> "工程管理部" orelse User.IsRole("经理") = falseThen 
            e.Cancel = true
        End If
End Select


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


加好友 发短信
等级:超级版主 帖子:113652 积分:578803 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/30 9:57:00 [只看该作者]

测试有什么问题?

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


加好友 发短信
等级:小狐 帖子:345 积分:2852 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2025/4/30 10:08:00 [只看该作者]

如果PrepareEdit事件里加2楼代码,工程部经理进入后其他列可以编辑,工程部其他员工除了这三列的其他列也可以编辑。

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


加好友 发短信
等级:小狐 帖子:345 积分:2852 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2025/4/30 10:18:00 [只看该作者]

举例,要做到行政部唐三可以编辑全部列,工程管理部王一只可以编辑指定三列,工程部李二全部列都不能编辑。三人密码都是1111


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb


[此贴子已经被作者于2025/4/30 10:18:42编辑过]

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


加好友 发短信
等级:超级版主 帖子:113652 积分:578803 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/30 10:24:00 [只看该作者]

Select Case e.Col.Name
    Case "审核", "项目经理", "项目管理人员"
        If User.Group <> "工程管理部" orelse User.IsRole("经理") = false Then 
            e.Cancel = true
        End If
case else
        If User.Group <> "行政部" Then 
            e.Cancel = true
        End If
End Select

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


加好友 发短信
等级:小狐 帖子:345 积分:2852 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2025/4/30 10:35:00 [只看该作者]

这样,行政部的人编辑不了指定的这三列。

另外有销售部只能编辑项目编号、项目名称这两列,不同的部门权限不同。是不是在afterOpenProjec中类似这样实现要好些:

if User.Group = "行政部" Then 

ElseIf User.Group = "销售部" Then

ElseIf User.Group = "工程管理部" Then
        DataTables("合同台账").AllowEdit = False
        Tables("合同台账").AllowEdit = False
        If User.IsRole("经理") Then
            DataTables("合同台账").DataCols("项目经理").AllowEdit = True
            Tables("合同台账").Cols("项目经理").AllowEdit = True
            DataTables("合同台账").DataCols("项目管理人员").AllowEdit = True
            Tables("合同台账").Cols("项目管理人员").AllowEdit = True 
        End If
end if 

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


加好友 发短信
等级:超级版主 帖子:113652 积分:578803 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/30 10:41:00 [只看该作者]

If User.Group = "销售部" Then
    Select Case e.Col.Name
        Case "项目编号", "项目名称"
        Case Else
            e.Cancel = True
    End Select
ElseIf User.Group = "工程管理部" AndAlso User.IsRole("经理") Then
    Select Case e.Col.Name
        Case "审核", "项目经理", "项目管理人员"
        Case Else
            e.Cancel = True
    End Select
ElseIf User.Group <> "行政部" Then 
    e.Cancel = True
End If 

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


加好友 发短信
等级:小狐 帖子:345 积分:2852 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2025/4/30 10:54:00 [只看该作者]

O了,非常感谢蓝老师!

 回到顶部