以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  权限表控制  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129758)

--  作者:ts9277
--  发布时间:2019/1/5 14:34:00
--  权限表控制

图片点击可在新窗口打开查看此主题相关图片如下:2019-01-05.png
图片点击可在新窗口打开查看

老师我想实现如下功能,这个代码如何修改
“由于多数表属于设置表,对不普通用户不显示。想根据不同部门来显示不同的表,对各别部门人员放开对某个表某列的编辑权限”
我的思路是这样的,先把所有表都不显示,再根据授权的设定来控制显示哪些表
LoadUserSetting 的代码如下:
 Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )

    For Each dr As DataRow In DataTables("授权表").Select("用户分组 = \'" & User.Group & "\'" )
        Tables(dr("表名")).Visible = True
        Tables(dr("表名")).AllowEdit =dr("可编辑")
If dr.IsNull("姓名")=False  And dr.IsNull("列名")=False Then   \' 表中姓名及列名不为空
  Tables(dr("表名")).Cols(dr("列名")).AllowEdit = True
End If

    Next
红色部分代码无效,授权表中增加姓名及列名,但用此用户登录后  部分列还是无法编辑,老师代码这样有问题吗?
想在授权表的表名及列名 作一下拉列表,把项目中所有的表名及相应表中的全部列 显示出来  方便输入,谢谢

--  作者:ts9277
--  发布时间:2019/1/5 14:35:00
--  
代码修改后,可见列 不进行控制了,会进行删除这列
[此贴子已经被作者于2019/1/5 14:35:16编辑过]

--  作者:有点蓝
--  发布时间:2019/1/5 15:29:00
--  

For Each t As Table In Tables
    t.Visible = True
    t.AllowEdit = True
    For Each c As Col In t.Cols
        c.Visible = True
        c.AllowEdit = True
    Next
Next
Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("用户分组 = \'" & User.Group & "\' and 姓名 = \'" & User.Name & "\'" )
        If dr.IsNull("列名") Then
            Tables(dr("表名")).Visible = Not dr("不可见")
            Tables(dr("表名")).AllowEdit = Not dr("不可编辑")
        Else
            Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑") 
        End If
    Next
End If

--  作者:ts9277
--  发布时间:2019/1/5 16:14:00
--  
For Each dr As DataRow In DataTables("授权表").Select("用户分组 = \'" & User.Group & "\' and 姓名 = \'" & User.Name & "\'" )
这个分组与姓名不能同时查找吧,一个组可以显示多个表,  这个组中的某人可以编辑其中一个表的某一列,所以先查找这个组能显示的表,再根据列来判断某列是否能编辑
老师这个想在授权表的表名及列名 作一下拉列表,把项目中所有的表名及相应表中的全部列 显示出来  方便输入,这个代码是如何写的,


--  作者:有点蓝
--  发布时间:2019/1/5 16:48:00
--  
这样1楼代码没有问题,前提是必须保证姓名和列名不为空的行必须是勾选“可编辑”的。

建议还是按照帮助的用法:先把所有表都显示,然后控制那些表和列不显示。

如果反过来先把所有表都不显示,然后控制那些表和列显示,这样的控制很麻烦。

把项目中所有的表名及相应表中的全部列 显示出来 参考: