以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 锁定指定列 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161005) |
-- 作者:nxqtxwz -- 发布时间:2021/3/2 7:49:00 -- 锁定指定列 请问老师,想通过审核后锁定记录的指定的几列,但这样的话,新增的行这些列也不能编辑了,这个问题怎么解决呢。 就是通过审核的记录锁定指定的几列,不是所有的列。还要允许新增的行的所有列都可编辑,怎么实现呢? |
-- 作者:有点蓝 -- 发布时间:2021/3/2 8:40:00 -- 参考:http://www.foxtable.com/webhelp/topics/0605.htm |
-- 作者:nxqtxwz -- 发布时间:2021/3/2 14:54:00 -- 我自己也蒙了,不知怎么写了。 Select Case e.Col.name
本意是违纪记录只有记录人可以编辑,如果审核列由政教处选择TRUE后,这一行就锁定,不能动了。但这样写,新增行也不能编辑了。 |
-- 作者:有点蓝 -- 发布时间:2021/3/2 14:59:00 -- "记录人"是多值字段?存储的是什么内容?截图看看 意思是这些列新增的行就算审核后也能编辑?
|
-- 作者:nxqtxwz -- 发布时间:2021/3/2 15:07:00 -- 老师,有时是多个人,有时是一个人。审核完了后不能改动 上面的问题我加一个 “If e.Row.IsNull("班级") = False Then”语句解决,但不知是不是最好的办法。 另想着“审核”这一列,只有政教处有审核权,审核完了后,这一条记录谁都不能改了,代码怎么改呢? [此贴子已经被作者于2021/3/2 15:07:50编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/3/2 15:10:00 -- 后面加一句 If e.Row("审核") = true Then
e.cancel = True End If |
-- 作者:nxqtxwz -- 发布时间:2021/3/2 15:46:00 -- 老师您好,我想简单了。空白记录只要填写了班级立即锁定,其它列也填写不了。
Select Case e.Col.name |
-- 作者:有点蓝 -- 发布时间:2021/3/2 15:54:00 -- 建议改一下分隔符,不要使用问号做记录人的分隔符,改为逗号之类的 Select Case e.Col.name Case "审核"If User.Group <> "政教处" Then e.cancel = True End If Case "学生违纪","班级","姓名","违纪时间","违纪地点","违纪类型","处理结果","处理日期","考察结束时间","相关资料","情况说明","记录人" If "," & e.Row("记录人") & "," Like "*," & User.Name & ",*" Then Else e.Cancel =True End If End Select 另外这个事件还有其它代码?
|
-- 作者:nxqtxwz -- 发布时间:2021/3/2 16:13:00 -- 有其它代码呢,下面是所有的代码。 If e.IsFocusCell Then \'如果是焦点所在单元格 \'If e.Row("审核") = True AndAlso User.Group <> "政教处" Then Select Case e.Col.name
|
-- 作者:有点蓝 -- 发布时间:2021/3/2 16:17:00 -- 不要使用问号做分隔符 另外e.Row.IsNull("班级") = False这些判断是干嘛用的,填写了数据就不能再编辑?
|