Foxtable(狐表)用户栏目专家坐堂 → 权限表控制


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

主题:权限表控制

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


加好友 发短信
等级:童狐 帖子:211 积分:1948 威望:0 精华:0 注册:2017/3/6 20:47:00
权限表控制  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:211 积分:1948 威望:0 精华:0 注册:2017/3/6 20:47:00
  发帖心情 Post By:2019/1/5 14:35:00 [只看该作者]

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

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


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


加好友 发短信
等级:童狐 帖子:211 积分:1948 威望:0 精华:0 注册:2017/3/6 20:47:00
  发帖心情 Post By:2019/1/5 16:14:00 [只看该作者]

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


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


加好友 发短信
等级:超级版主 帖子:110629 积分:563047 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/1/5 16:48:00 [只看该作者]

这样1楼代码没有问题,前提是必须保证姓名和列名不为空的行必须是勾选“可编辑”的。

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

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

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

 回到顶部