Foxtable(狐表)用户栏目专家坐堂 → 锁定指定列


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

主题:锁定指定列

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


加好友 发短信
等级:六尾狐 帖子:1492 积分:12149 威望:0 精华:0 注册:2013/3/19 16:41:00
锁定指定列  发帖心情 Post By:2021/3/2 7:49:00 [只看该作者]

请问老师,想通过审核后锁定记录的指定的几列,但这样的话,新增的行这些列也不能编辑了,这个问题怎么解决呢。

就是通过审核的记录锁定指定的几列,不是所有的列。还要允许新增的行的所有列都可编辑,怎么实现呢?


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


加好友 发短信
等级:超级版主 帖子:105926 积分:538699 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/2 8:40:00 [只看该作者]


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


加好友 发短信
等级:六尾狐 帖子:1492 积分:12149 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2021/3/2 14: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

 

本意是违纪记录只有记录人可以编辑,如果审核列由政教处选择TRUE后,这一行就锁定,不能动了。但这样写,新增行也不能编辑了。



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


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

"记录人"是多值字段?存储的是什么内容?截图看看

意思是这些列新增的行就算审核后也能编辑?

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


加好友 发短信
等级:六尾狐 帖子:1492 积分:12149 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2021/3/2 15:07:00 [只看该作者]

老师,有时是多个人,有时是一个人。审核完了后不能改动

上面的问题我加一个 “If e.Row.IsNull("班级") = False Then”语句解决,但不知是不是最好的办法。

另想着“审核”这一列,只有政教处有审核权,审核完了后,这一条记录谁都不能改了,代码怎么改呢?

[此贴子已经被作者于2021/3/2 15:07:50编辑过]

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


加好友 发短信
等级:超级版主 帖子:105926 积分:538699 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/2 15:10:00 [只看该作者]

后面加一句

        If  e.Row("审核")  = true Then
            e.cancel = True
        End If

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


加好友 发短信
等级:六尾狐 帖子:1492 积分:12149 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2021/3/2 15:46:00 [只看该作者]

老师您好,我想简单了。空白记录只要填写了班级立即锁定,其它列也填写不了。

 

Select Case e.Col.name
    Case "审核"
        If  User.Group <> "政教处" Then
            e.cancel = True
        End If
    Case "学生违纪","班级","姓名","违纪时间","违纪地点","违纪类型","处理结果","处理日期","考察结束时间","相关资料","情况说明","记录人"
       
        If e.Row.IsNull("班级") = False Or e.Row.IsNull("姓名") = False  Then
            If  "?" & e.Row("记录人") & "?" Like "*?" & User.Name & "?*"  Then
            Else
                e.Cancel =True
            End If
        End If
       
End Select


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


加好友 发短信
等级:超级版主 帖子:105926 积分:538699 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1492 积分:12149 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2021/3/2 16:13:00 [只看该作者]

有其它代码呢,下面是所有的代码。

If e.IsFocusCell Then  '如果是焦点所在单元格
    If e.Col.Name = "姓名" Then  '如果正在编辑的是县市列
        '从行政区域表提取该省市的县市作为列表项目
        e.Col.Combolist = DataTables("学生名单").GetComboListString("学生姓名", "[班级] = '" & e.Row("班级") & "'")
    End If
End  If

'If e.Row("审核") = True AndAlso User.Group <> "政教处" Then
'    e.Cancel = True
'End  If

Select Case e.Col.name
    Case "审核"
        If  User.Group <> "政教处" Then
            e.cancel = True
        End If
    Case "学生违纪","班级","姓名","违纪时间","违纪地点","违纪类型","处理结果","处理日期","考察结束时间","相关资料","情况说明","记录人"
       
        If e.Row.IsNull("班级") = False  AndAlso  e.Row.IsNull("姓名") = False  AndAlso  e.Row.IsNull("违纪时间") = False   AndAlso  e.Row.IsNull("违纪地点") = False  AndAlso  e.Row.IsNull("违纪类型") = False  AndAlso  e.Row.IsNull("处理结果") = False  AndAlso  e.Row.IsNull("处理日期") = False  AndAlso  e.Row.IsNull("情况说明") = False AndAlso  e.Row.IsNull("记录人") = False             Then
            If  "?" & e.Row("记录人") & "?" Like "*?" & User.Name & "?*"  Then
            Else
                e.Cancel =True
            End If
        End If
       
End Select


If  e.Row("审核")  = True Then
    e.cancel = True
End If


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


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

不要使用问号做分隔符

另外e.Row.IsNull("班级") = False这些判断是干嘛用的,填写了数据就不能再编辑?

 回到顶部
总数 21 1 2 3 下一页