以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于单元格编辑权限的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=115319)

--  作者:初心不改再说未来
--  发布时间:2018/3/5 10:51:00
--  关于单元格编辑权限的问题
表A中有 电话 接待人 两列
如何可以
当员工A登录输入电话后,员工B看到的是****
但当员工B在接待人处填写自己的姓名后(外部用户表)
就可以看到正常的电话号码

此时对于员工A 和 B  都可以看见电话号码

但是对于员工C D E 等  仍然看不到号码只能看到****

且表A的接待人列不许再更改
这个代码该怎么写?
昨天用隐藏数据的办法实现了****的状态
但是员工A B  登录后也成了****的样子
求解答

--  作者:有点甜
--  发布时间:2018/3/5 11:15:00
--  

drawcell事件,写代码

 

If e.col.name = "电话号码" Then

    If e.row("接待人") <> user.name AndAlso e.row("填写人") <> user.name Then

        e.text = "***"

    End If

End If

 

startEdit事件,写代码

 

If e.row("接待人") > "" Then

    e.cancel = true

End If


--  作者:初心不改再说未来
--  发布时间:2018/3/5 11:24:00
--  
.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2018.3.3.1
错误所在事件:表,地接部业务中心表,DrawCell
详细错误信息:
调用的目标发生了异常。
列“填写人”不属于表 业务表。


版主  我没有填写人这个列啊  要怎么代替
[此贴子已经被作者于2018/3/5 11:25:31编辑过]

--  作者:有点甜
--  发布时间:2018/3/5 11:26:00
--  

如果没有,那就改成固定的值

 

If e.row("接待人") <> user.name AndAlso "员工A" <> user.name Then


--  作者:初心不改再说未来
--  发布时间:2018/3/5 12:27:00
--  
If e.Row("接待人") > "" Then
    e.cancel = True
End If

这个代码执行之后,现在不仅仅是接待人这一个列不能更改,为什么所有列都不能更改了?应该是仅仅接待人这一列不能更改啊  是我哪里设置有问题吗  表里没有其他事件啊


--  作者:初心不改再说未来
--  发布时间:2018/3/5 13:45:00
--  
好了   应该是在PrepareEdit事件代码设置为
If e.Col.Name = "接待人" Then 
    If e.Row.IsNull("接待人") = False Then
            e.Cancel = True
        
    End If
End If

--  作者:初心不改再说未来
--  发布时间:2018/3/5 13:56:00
--  
也不行  现在是这一列只要有一个数据   整个列都不能编辑了

郁闷   咋写啊版主


好了 搞定了 锁定列了  唉 
[此贴子已经被作者于2018/3/5 13:59:53编辑过]