Foxtable(狐表)用户栏目专家坐堂 → 权限控制不起作用,求助!


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

主题:权限控制不起作用,求助!

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
权限控制不起作用,求助!  发帖心情 Post By:2016/8/18 23:05:00 [只看该作者]

在项目事件 afteropenproject 中写了如下代码:

If user.Group<>"管理员"  Then 
For Each tb As Table In Tables     'tb轮询每一张表
    ' Dim dr As DataRow 
    ' Dim str="分组名= " & user.group & " And 表名=" & tb.name  & " And 列名 = Nothing"      
     'MessageBox.Show(str)
     'dr =DataTables("授权表").sqlfind("分组名=  'user.group'  And 表名=  'tb.name'  And 列名 = Nothing "  )        '找到分组名=当前操作员分组,且表名是当前轮询的表名那行   
      Dim drs As List(of DataRow)  =DataTables("授权表").sqlselect("分组名=  '" & user.group & "'  And 表名=  '" & tb.name & "'"  )        '找到分组名=当前操作员分组,且表名是当前轮询的表名那行   
      
          If drs.Count > 0 Then     '如果找到分组名=当前操作员分组  ,且表名是当前轮询表的行
            For Each dr As DataRow In drs 
          '  MessageBox.show(user.group & tb.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
           Else      '如果没有找到该表表名,则该表置为不可见,也不可编辑
                    ' MessageBox.show( user.group & tb.name & "没找到该行")  
              Tables(tb.Name).Visible = False
              Tables(tb.Name).AllowEdit = False 
          End If 
     
Next 


且在"授权表"中,填写如下数据:

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

但是我的  任务跟踪表  是放置在窗口的 table控件中,没有看到锁定标志,也就是说没有起到控制效果。   不知道何故!和窗口有关系吗?  问题是我其它的表又可以,我郁闷了。



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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/18 23:20:00 [只看该作者]

 窗口表,是打开的时候,才生成的。

 

 你要在窗口afterLoad事件,也执行一次权限的代码。


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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2016/8/19 8:48:00 [只看该作者]

我想到过这个问题,所以我在afterproject 事件中,把所有的窗口表都open了,结果有的表可以锁定,有的表不可以。不知何故

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/19 8:55:00 [只看该作者]

把所有的窗口表都open?汗!

窗口关闭就失效了,还是写到窗口afterLoad事件吧,如果代码通用,可以做成函数调用

 回到顶部