以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 某列的编辑权限 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=196470) |
-- 作者:foxyuan -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2025/4/30 9:57:00 -- 测试有什么问题? |
-- 作者:foxyuan -- 发布时间:2025/4/30 10:08:00 -- 如果在PrepareEdit事件里加2楼代码,工程部经理进入后其他列可以编辑,工程部其他员工除了这三列的其他列也可以编辑。 |
-- 作者:foxyuan -- 发布时间:2025/4/30 10:18:00 -- 举例,要做到行政部唐三可以编辑全部列,工程管理部王一只可以编辑指定三列,工程部李二全部列都不能编辑。三人密码都是1111 [此贴子已经被作者于2025/4/30 10:18:42编辑过]
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2025/4/30 10:54:00 -- O了,非常感谢蓝老师! |