以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 权限控制不起作用,求助! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89312) |
-- 作者:ycwk -- 发布时间: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 且在"授权表"中,填写如下数据: 但是我的 任务跟踪表 是放置在窗口的 table控件中,没有看到锁定标志,也就是说没有起到控制效果。 不知道何故!和窗口有关系吗? 问题是我其它的表又可以,我郁闷了。 |
-- 作者:大红袍 -- 发布时间:2016/8/18 23:20:00 -- 窗口表,是打开的时候,才生成的。
你要在窗口afterLoad事件,也执行一次权限的代码。 |
-- 作者:ycwk -- 发布时间:2016/8/19 8:48:00 -- 我想到过这个问题,所以我在afterproject 事件中,把所有的窗口表都open了,结果有的表可以锁定,有的表不可以。不知何故 |
-- 作者:Hyphen -- 发布时间:2016/8/19 8:55:00 -- 把所有的窗口表都open?汗! 窗口关闭就失效了,还是写到窗口afterLoad事件吧,如果代码通用,可以做成函数调用 |