以文本方式查看主题

-  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=41028)

--  作者:sxqq123
--  发布时间:2013/10/9 16:14:00
--  请教权限管理问题

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

我在设计窗口表和表的编辑功能权限时,代码如下:

If User.Type = UserTypeEnum.User Then
    For Each t As Table In Tables
        t.AllowEdit=False
        If t.Name.Contains("_") Then
            t.AllowEdit=False
            Dim ary() As String = t.Name.Split("_")
            Dim fdr As DataRow = DataTables("权限管理").Find("用户名 = \'" & UserName & "\' and 窗口 = \'" & ary(0) & "\' and 表名 = \'" & ary(1) & "\'")
            If fdr IsNot Nothing Then
                t.AllowEdit = fdr("可编辑")
            Else
                t.AllowEdit = False
            End If
        Else
            Dim fdr As DataRow = DataTables("权限管理").Find("用户名 = \'" & UserName & "\' and 表名 = \'" & t.Name & "\'")
            If fdr IsNot Nothing Then
                t.AllowEdit = fdr("可编辑")
            End If
        End If
    Next
End If

加上上面红字,全部表不能编辑,去掉红字,全部表都能编辑,请教大师指点如何实现用户对不同表和窗口表的编辑权限设置。


--  作者:Bin
--  发布时间:2013/10/9 16:17:00
--  
http://www.foxtable.com/help/topics/1600.htm
--  作者:sxqq123
--  发布时间:2013/10/9 19:48:00
--  
想实现张三能够编辑窗口2_Table1、表B、表D,不能编辑窗口1_Table1、表C、表E,经过多次调整还是不能达到目标,请老师指教
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:权限管理.table


--  作者:有点甜
--  发布时间:2013/10/9 20:03:00
--  
 如下代码。

If User.Type = UserTypeEnum.Developer Then
    For Each t As Table In Tables
        t.Visible = True
        t.AllowEdit = True
    Next
End If

Forms("窗口1").open
Forms("窗口1").visible=False
Forms("窗口2").open
Forms("窗口2").visible=False

If User.Type = UserTypeEnum.User Then
    For Each t As Table In Tables
        If t.Name.Contains("_") Then
            Dim ary() As String = t.Name.Split("_")
            Dim fdr As DataRow = DataTables("权限管理").Find("用户名 = \'" & User.Name & "\' and 窗口 = \'" & ary(0) & "\' and 表名 = \'" & ary(1) & "\'")
            If fdr IsNot Nothing Then
               t.AllowEdit = fdr("可编辑")
            Else
                t.AllowEdit = False
            End If
        End If
        t.AllowEdit = False
        Dim dr As DataRow = DataTables("权限管理").Find("用户名 = \'" & user.Name & "\' and 表名 = \'" & t.Name & "\'")
        If dr IsNot Nothing Then
           t.AllowEdit = dr("可编辑")
        Else
           t.AllowEdit = False
        End If
    Next
End If

--  作者:sxqq123
--  发布时间:2013/10/9 20:40:00
--  

执行过程中遇到以下问题麻烦指教:

1、新增用户应该是执行 t.AllowEdit = False,但是新增用户拥有全部编辑功能,

2、打开窗口的主表没有加载,如何处理?

3、李三对两个窗口表都不能编辑。


--  作者:有点甜
--  发布时间:2013/10/9 20:57:00
--  
 第一个问题不存在,你重新打开项目试一下。

 第二个问题,对于窗口表,权限写在窗口的afterload中。每个窗口打开后,自动执行一个内部函数(自己设计的权限),去限制窗口表。

 第三个问题,看第二个问题的处理。在afteropenproject执行权限后,若窗口关闭重新打开,权限是失效的。

--  作者:sxqq123
--  发布时间:2013/10/9 21:36:00
--  

我完全按照上述代码进行权限设置,使用外部表只做了一点改动:用户名 = \'" & User.Name & "\' 改为用户名 = \'" & _UserName & "\'

项目执行结果是:没有给权限的用户可以编辑好多表,设置某个表只有某个用户可以编辑却实现不了,请教可能是什么原因?我再好好排查,谢谢


--  作者:sxqq123
--  发布时间:2013/10/10 17:22:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:权限管理_201310101659.zip

麻烦老师指教对没有加载表如何进行权限设置,非常感谢BIN老师和有点甜老师的指教。