Foxtable(狐表)用户栏目专家坐堂 → 视化授权


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

主题:视化授权

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:89286 积分:453153 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 9:30: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 )
msgbox(User.Type)
If User.Type = UserTypeEnum.User Then
msgbox("用户名 = '" & User.Name & "'")
    For Each dr As DataRow In DataTables("授权表").Select("用户名 = '" & User.Name & "'" )
        If dr.IsNull("列名"Then
msgbox("表名 = " & dr("表名") & ",不可见=" & dr("不可见") & ",不可编辑=" & dr("不可编辑"))
        
    Tables(dr("表名")).Visible = Not dr("不可见")
            Tables
(dr("表名")).AllowEdit = Not dr("不可编辑")

        Else
msgbox("表名 = " & dr("表名") & ",列名 = " dr("列名"& ",不可见=" & dr("不可见") & ",不可编辑=" & dr("不可编辑"))
            Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables
(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
        End
 
If
    Next
End
 
If

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


加好友 发短信
等级:超级版主 帖子:89286 积分:453153 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 10:00:00 [显示全部帖子]

都弹出什么内容

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


加好友 发短信
等级:超级版主 帖子:89286 积分:453153 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 10:03:00 [显示全部帖子]

请上传实例测试

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


加好友 发短信
等级:超级版主 帖子:89286 积分:453153 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 11:24:00 [显示全部帖子]

测试没有问题啊。
002登录,考勤表为锁定不可编辑。

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

切换用户使用003登录,报表表就看不到了

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


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


加好友 发短信
等级:超级版主 帖子:89286 积分:453153 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 13:37:00 [显示全部帖子]

msgbox是用来调试问题的:http://www.foxtable.com/webhelp/topics/1485.htm,找到并解决问题后可以去掉啊

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


加好友 发短信
等级:超级版主 帖子:89286 积分:453153 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 14:16:00 [显示全部帖子]

什么按键?写了什么代码?

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


加好友 发短信
等级:超级版主 帖子:89286 积分:453153 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 14:55:00 [显示全部帖子]

1、设置MainTable,会使原先隐藏的表格出现,如果不想隐藏的表格出现,要另外加控制,比如可以查询一下授权表,当前用户这个窗口是否设置为隐藏了,例如:
Forms("主页").Open()
if DataTables("授权表").find("用户名 = '" & User.Name & "' and 表名='生产排版' and 不可见=true" ) is nothing then
MainTable = Tables("生产排版")
end if

2、要学会理解代码再用,帮助只是提供一种用法来说明如何进行表格授权。不代表这种用法适合所有的场合100年都不用变。

我们来理解一下代码:

首先注意代码的前8行,会把所有的table,所有的列都设置为可见,如果切换用户的时候,窗口是打开的,肯定受影响的。可以加代码判断一下,如果是窗口表,可以改为副本,然后判断
For Each t As Table In Tables
if Not(t.name like "*_*") then '窗口副本名称都会有一个下划线,判断如果有下划线的就不要控制了
    t.Visible = 
True
    t.AllowEdit = 
true
    For Each c As Col In t.Cols
        c.Visible = 
True
        c.AllowEdit = 
True
    Next
end if
Next
其次后面的授权控制又会对需要控制的表格重新做一次设置,当然处理方法也可以参考上面解决

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


加好友 发短信
等级:超级版主 帖子:89286 积分:453153 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/17 15:31:00 [显示全部帖子]

绝对不可以。除非每次都是关闭项目后重新打开,而不是通过切换用户的方式使用。如果是通过切换用户的方式切换用户使用,会发现之前用户的设置会影响到当前用户的设置的。

其实最合理的应该是通过切换用户的方式切换用户使用的时候,应该关闭所有已经打开的窗口,然后新用户需要什么窗口再自己打开。不然可能会出现前面的用户有权限打开的窗口,而新用户登录后可能是没有权限看的,还会看到这个打开的窗口以及数据,这就不合理了

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


加好友 发短信
等级:超级版主 帖子:89286 积分:453153 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/17 15:43:00 [显示全部帖子]

看14楼,不是给出代码了吗?!!

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


加好友 发短信
等级:超级版主 帖子:89286 积分:453153 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/17 16:18:00 [显示全部帖子]

首先14楼没有任何弹窗的代码

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

其次,弹窗代码是用来调试找问题的,找到问题后可以自己去掉和弹窗有关的代码啊!调试技巧:http://www.foxtable.com/webhelp/topics/1485.htm

 回到顶部
总数 13 1 2 下一页