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


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

主题:视化授权

帅哥,在线噢!
denghui69986
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:432 积分:2786 威望:0 精华:0 注册:2022/3/25 7:44:00
  发帖心情 Post By:2022/6/16 14:10:00 [只看该作者]

是不是我主页上设定按键跳转表页面不起作用,不可编辑有效果,就是不可见,点按键还是一样看得见,我在测试表上是全部可以,放到设定好有按键跳转页面就失效不可见的表

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


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

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

 回到顶部
帅哥,在线噢!
denghui69986
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:432 积分:2786 威望:0 精华:0 注册:2022/3/25 7:44:00
  发帖心情 Post By:2022/6/16 14:36:00 [只看该作者]

设定的主页上面按键,比如:生产排版
Forms("主页").Open()
MainTable = Tables("生产排版")

刚还发现一个问题就是添加权限代码很多窗口里面表设置固定列不起作用有多少列都出现,不知怎么这代码都所有窗口表都影响控制不需要的列也出现

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.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


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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望: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
其次后面的授权控制又会对需要控制的表格重新做一次设置,当然处理方法也可以参考上面解决

 回到顶部
帅哥,在线噢!
denghui69986
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:432 积分:2786 威望:0 精华:0 注册:2022/3/25 7:44:00
  发帖心情 Post By:2022/6/17 15:05:00 [只看该作者]

我把前面8行取消暂时看来对窗口还是没影响,其它还没发现问题,老师这样设置理论上可以吗?

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

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/17 15:31:00 [只看该作者]

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

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

 回到顶部
帅哥,在线噢!
denghui69986
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:432 积分:2786 威望:0 精华:0 注册:2022/3/25 7:44:00
  发帖心情 Post By:2022/6/17 15:37:00 [只看该作者]

主要是那可视权限代码加进去后窗口上所有表控制不了列,能用什么方法控制,指导一下,谢谢

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


加好友 发短信
等级:小狐 帖子:355 积分:2552 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)绝对不可以。除非每次都是关闭项目后...  发帖心情 Post By:2022/6/17 15:38:00 [只看该作者]

这个在哪个章节有介绍的?

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/17 15:43:00 [只看该作者]

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

 回到顶部
帅哥,在线噢!
denghui69986
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:432 积分:2786 威望:0 精华:0 注册:2022/3/25 7:44:00
  发帖心情 Post By:2022/6/17 16:13:00 [只看该作者]

14楼这代码就是切换账号一直弹窗

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

 回到顶部
总数 25 上一页 1 2 3 下一页