以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 用户可视化权限设置疑问  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=67765)

--  作者:hch
--  发布时间:2015/5/1 15:23:00
--  [求助] 用户可视化权限设置疑问
    我想完成对自建立的管理系统人员分配不同权限,使他们对项目中的某个表进行编辑权限设置。参照帮助文件 “ 让不同用户处理不同的表,可视化授权的实现”及《可视化授权项目》学习,在项目中增加一个“授权表”表格式内容见截图:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试4281.table


图片点击可在新窗口打开查看此主题相关图片如下:qq截图.png
图片点击可在新窗口打开查看
    1、在项目事件LoadUserSetting中,加入如下代码:
   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 & "\'" )
        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
    2、在授权表中的PrepareEdit事件中设置代码:
Select Case User.Name 
    Case "张三","李四"
        e.Cancel = True
End Select
    设置完成代码后,在切换不同自定义用户如张三、李四,发现代码不起作用,任何人都可编辑表《正式职工》中的信息,这是怎么回事呀,请给予明确提示
,谢谢。

--  作者:sloyy
--  发布时间:2015/5/1 18:02:00
--  
明确提示 :USER外部表不存在!
--  作者:hch
--  发布时间:2015/5/2 10:07:00
--  
是不是要建立一个外部数据源,表名程为 "user"的外部数据表,表的结构及内容就是授权表的结构和内容,然后与项目进行关联。我是初学者能否给个明确操作步骤。
--  作者:大红袍01
--  发布时间:2015/5/3 21:37:00
--  

代码

 

User.Name要替换成_UserName

User.Group要替换成_UserGroup

 

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("分组名 = \'" & _UserGroup & "\'" )
        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


--  作者:hch
--  发布时间:2015/5/4 14:40:00
--  
首先谢谢3楼老师。根据你的提示我在项目事件上替换了你提供的代码字段,测试还是不行,不知在那个地方将User.Name要替换成_UserName,User.Group替换成_UserGroup是你修改的红色标记地段吗(Select("分组名 = \'" & _UserGroup & "\'" ))我是初学者,能否在我提供测试文件上给与修改,我再下载后套用。我看帮助文件有两种方式,一种是直接在需要设置权限表的表属性加代码设定权限;另一种是根据可视化授权实现对表的编辑权限的设置。不明白到底采用那种方法才能实现我想要的结果,就是针对不同用户对不同的表有不同编辑权限。
--  作者:Bin
--  发布时间:2015/5/4 14:44:00
--  
在所有的地方.都需要替换掉.
--  作者:Bin
--  发布时间:2015/5/4 14:44:00
--  
可视化权限的例子,可以满足你需求
--  作者:大红袍
--  发布时间:2015/5/4 14:58:00
--  

         

   

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试4281.table


--  作者:hch
--  发布时间:2015/5/11 16:58:00
--  
不好意思,我还是没有弄明白不同用户处理不同表的编辑权限设置。反复看了帮助和“可视化授权”示例,在测试项目中套用可视化授权示例代码,编码放在同样事件下,根据大红袍01老师提示将 项目事件LoadUserSettingSelect("用户名 = \'" & User.Name & "\'" )改写为Select("用户名 = \'" & _User.Name & "\'" ),但测试发现权限不起作用,另外BIN老师指出在所有的地方.都需要替换掉.是指项目事件、表事件、及登录窗口、用户管理、等地方吗?8楼大红袍给的修改文件下载测试还是不行。现将测试文件再次上传,请老师们看看,给具体编写一下,谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试1.table


--  作者:大红袍
--  发布时间:2015/5/11 19:30:00
--  
 8楼没有任何问题