Foxtable(狐表)用户栏目专家坐堂 → [求助] 用户可视化权限设置疑问


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

主题:[求助] 用户可视化权限设置疑问

美女呀,离线,留言给我吧!
hch
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:110 积分:1170 威望:0 精华:0 注册:2012/9/12 15:30:00
[求助] 用户可视化权限设置疑问  发帖心情 Post By: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
    设置完成代码后,在切换不同自定义用户如张三、李四,发现代码不起作用,任何人都可编辑表《正式职工》中的信息,这是怎么回事呀,请给予明确提示
,谢谢。

 回到顶部
美女呀,离线,留言给我吧!
hch
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:110 积分:1170 威望:0 精华:0 注册:2012/9/12 15:30:00
  发帖心情 Post By:2015/5/2 10:07:00 [显示全部帖子]

是不是要建立一个外部数据源,表名程为 "user"的外部数据表,表的结构及内容就是授权表的结构和内容,然后与项目进行关联。我是初学者能否给个明确操作步骤。

 回到顶部
美女呀,离线,留言给我吧!
hch
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:110 积分:1170 威望:0 精华:0 注册:2012/9/12 15:30:00
  发帖心情 Post By:2015/5/4 14:40:00 [显示全部帖子]

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

 回到顶部
美女呀,离线,留言给我吧!
hch
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:110 积分:1170 威望:0 精华:0 注册:2012/9/12 15:30:00
  发帖心情 Post By:2015/5/11 16:58:00 [显示全部帖子]

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


 回到顶部
美女呀,离线,留言给我吧!
hch
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:110 积分:1170 威望:0 精华:0 注册:2012/9/12 15:30:00
  发帖心情 Post By:2015/5/12 8:41:00 [显示全部帖子]

谢谢我在看看,问题到底出现在哪里。

 回到顶部
美女呀,离线,留言给我吧!
hch
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:110 积分:1170 威望:0 精华:0 注册:2012/9/12 15:30:00
  发帖心情 Post By:2015/5/12 11:42:00 [显示全部帖子]

大红袍老师您好!我下载看了你上传的文件测试过不行。看到你把代码字段写在AfterOpenproject事件上。我在授权表PrepareEdit事件中去掉所有代码,未添加任何代码字段,在项目事件LoadUserSetting中去掉代码字段,改写到AfterOpenproject事件上添加你修改的代码字段如下:测试后仍不行,切换不同用户发现受权限限制的用户仍可以修改编辑授限制的表内容。外部用户数据源连接测试提示成功,感觉代码设置事件位置也正确,但就是在测试时得不到想要的结果,又不明白问题出在那里。

你修改的代码字段内容是否如下:
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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:110 积分:1170 威望:0 精华:0 注册:2012/9/12 15:30:00
  发帖心情 Post By:2015/5/12 14:15:00 [显示全部帖子]

烦在问一下,你说吧上段代码放在登录窗口事件中,我在登录窗口事件中未找到有afteropenproject事件选项,能否再具体指出登录窗口中那个位置,那个事件名称下加写此段代码。

 回到顶部
美女呀,离线,留言给我吧!
hch
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:110 积分:1170 威望:0 精华:0 注册:2012/9/12 15:30:00
  发帖心情 Post By:2015/5/12 20:46:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq图.png
图片点击可在新窗口打开查看
我在登陆窗口确定按钮中 click 事件中添加了
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  代码 出现截图提示,不知错误又出在哪?
 
 

 回到顶部