以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]多部门员工,协调填的表A里面多列(列如果有值,数据保存后不能编辑)总经理才有权编辑 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=118591) |
||||
-- 作者:湛江智 -- 发布时间:2018/5/6 22:47:00 -- [求助]多部门员工,协调填的表A里面多列(列如果有值,数据保存后不能编辑)总经理才有权编辑 多部门员工,协调填的表A里面多列(列如果有值,数据保存后不能编辑)总经理才有权编辑
![]() ![]()
帮助文件:精确控制单元格编辑权限
If e.Col.Name = "标注" Then \'如果修改的是标注列 上面代码只能是1列有内容后,张经理才有权编辑,如果很多列呢? |
||||
-- 作者:有点甜 -- 发布时间:2018/5/6 22:57:00 -- If e.Col.Name = "标注" orelse e.Col.Name = "第二列" Then \'如果修改的是标注列 If e.Row.IsNull(e.col.name) = False Then \'如果已经有内容 If User.Name <> "张经理" Then \'且用户不是张经理 e.Cancel = True \'那么禁止编辑 End If End If End If |
||||
-- 作者:湛江智 -- 发布时间:2018/5/6 23:35:00 -- 回复:(有点甜)If e.Col.Name = "标注" orelse e.Co... 上面的代码只能2列填写保存后(只有总经理 部门的张经理编辑) 上面的代码只能两列实现,现在问题是表有70列,按你的方法,代码要把所有列名都接起来——表的列数量和名称还可能更改,动态的代码怎么写呢》?
同时想实现一逻辑列:已提交 勾选 已提交列 后,该行已填写的列值(只有总经理 部门的张经理编辑),张经理取消勾选的已提交列后,员工可重新对改行编辑 也就是实现简单的审批功能
[此贴子已经被作者于2018/5/7 9:22:25编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2018/5/7 9:29:00 -- 只有一种办法做到动态,就是所有需要控制的列名称都必须有规律,比如统一这样的名称;a_第一列,a_第二列,a_第三列...... If e.Col.Name.StartsWith("a_") Then If e.Row.IsNull(e.Col.name) = False Then \'如果已经有内容 If e.Row("已提交") = True AndAlso User.Name <> "张经理" Then \'且用户不是张经理 e.Cancel = True \'那么禁止编辑 End If End If End If |
||||
-- 作者:湛江智 -- 发布时间:2018/5/7 16:39:00 -- 回复:(有点蓝)只有一种办法做到动态,就是所有需要... 坛主,上面代码放在窗口的全局事件的Enter,和窗口的AfterLoad报错 上面代码放在那里呢? ![]() ![]() ![]() ![]() |
||||
-- 作者:有点蓝 -- 发布时间:2018/5/7 16:48:00 -- prepareedit:http://www.foxtable.com/webhelp/scr/0605.htm |
||||
-- 作者:湛江智 -- 发布时间:2018/5/7 17:02:00 -- 回复:(有点蓝)prepareedit:http://www.foxtable.c... 坛主,表属性PrepareEdit,只能是面对表编辑的时候有用 我的窗口里面没有table表控件,窗口里面的TextBox控件,还可以编辑和修改已经填入表的信息——没达到想要的结果
![]() ![]() [此贴子已经被作者于2018/5/7 17:17:26编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2018/5/7 17:20:00 -- Dim ctl As WinForm.Control = e.Sender ctl.ReadOnly = BooleanEnum.False \'允许编辑 Dim r As Row = Tables("表A").Current If r IsNot Nothing AndAlso ctl.BindingField > "" Then If r.IsNull(ctl.BindingField.Split(".")(1)) = False Then \'如果已经有内容 If r("已提交") = True AndAlso User.Name <> "张经理" Then \'且用户不是张经理 ctl.ReadOnly = BooleanEnum.True \'禁止编辑 End If End If End If |
||||
-- 作者:湛江智 -- 发布时间:2018/5/7 17:45:00 -- 感谢,坛主 |
||||
-- 作者:湛江智 -- 发布时间:2018/6/12 15:04:00 -- 回复:(有点蓝)http://www.foxtable.com/webhelp/sc... 当前登录者姓名 = 部门员工列的姓名 这行的a_2列 当前登录者可以编辑,下面代码怎么修改呢?
Dim ctlf As WinForm.TextBox = e.Form.Controls("TextBox2") ![]() ![]()
[此贴子已经被作者于2018/6/12 15:11:12编辑过]
|