让不同用户处理不同的列

前面我们已经学会了如何设置代码,使得某些列只能被特定的用户编辑。
有的时候,可能希望某些列只能被特定的用户查看和编辑,而其他用户连查看都是不允许的。

假定一个表,要求:

1、张三和李四不能看到第一列、第二列和第三列。
2、王五和赵六不能看到第四列、第五列和第六列。
3、只有张经理编辑才能看到第十列。

为此可以在项目的AfterOpenProject事件中设置代码:

Select Case User.Name
    Case
"张三","李四"
       
Tables("订单").Cols.Remove("第一列")
        Tables
("订单").Cols.Remove("第二列")
        Tables
("订单").Cols.Remove("第三列")
    Case
"王五", "赵六"
       
Tables("订单").Cols.Remove("第四列")
        Tables
("订单").Cols.Remove("第五列")
       
Tables("订单").Cols.Remove("第六列")
End
Select
If
User.Name <> "张经理" Then
    Tables
("订单").Cols.Remove("第 十列")
End
If

提示:上述代码必须重新打开项目才会正常生效,切换用户是无效的。

上述代码在打开项目后执行,移除登录用户无权处理的列,例如王五登录后,第四列、第五列和第六列将被移除(注意不是删除),即使执行取消隐藏列命令,也无法将这些列重新显示出来。
虽然这些列已经从Table中移除,用户无法编辑和查看其内容,但是仍然可以通过代码或表达式使用或设置这些列的内容。

上述代码是基于用户名的,同样可以改为基于用户分组,只需将上述代码中的User.Name改为User.Group,并将用户名替换为分组名即可。


本页地址:http://www.foxtable.com/webhelp/topics/2257.htm