以文本方式查看主题

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

--  作者:stone9434
--  发布时间:2016/1/22 15:33:00
--  自定义函数是否有问题?请指教
目录树形式的授权,根据帮助做了一个自定义函数,但因为采用的是自定义用户窗口登录,就是说没有采用内置的用户,然后修改了 _UserType  _UserGroup _UserName ,然后执行   If Functions.Execute("ShouQuan","物料采购","审核") Then
Forms("物料采购合同审批单一览表").Open()
发现对所有用户都能打开,不知道是不是自定义函数的问题

--  作者:stone9434
--  发布时间:2016/1/22 15:34:00
--  
就是说不管这个用户授权了权限或者没授权,都能打开窗口,不知道什么原因,授权的自定义的代码如下
If _UserType <> UserTypeEnum.User Then \' 如果是开发者或者管理员
    Return True \'则具备所有权限
End If
Dim dt As DataTable = DataTables("授权")
Dim dr As DataRow
\'首先判断分组的授权用户是否包括此用户或此用户所属的分组
dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 Is Null" )
If dr Is Nothing Then
    MessageBox.show("不存在名为""" & args(0) & "分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return False
End If
If dr.IsNull("用户") = False Then
    Dim nms() As String = dr("用户").Split(",")
    For Each nm As String In nms
        If nm = _UserGroup OrElse nm = _UserName Then \'如果授权用户包括登录用户所属的分组或其用户名
 \'If nm = User.Group OrElse nm = User.Name Then \'如果授权用户包括登录用户所属的分组或其用户名

            Return True \'返回True
        End If
    Next
End If
\'然后判断权限的授权用户是否包括此用户或此用户所属的分组
If Args(1) = "" Then
    Return False
End If
dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 = \'" & args(1) & "\'")
If dr Is Nothing Then
    MessageBox.show("不存在名为""" & args(1) & "权限!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return False
End If
If dr.IsNull("用户") = False Then
    Dim nms() As String = dr("用户").Split(",")
    For Each nm As String In nms
        If nm = _UserGroup OrElse nm = _UserName Then \'如果授权用户包括登录用户所属的分组或其用户名
\'If nm = User.Group OrElse nm = User.Name Then \'如果授权用户包括登录用户所属的分组或其用户名
            Return True \'返回True
        End If
    Next
End If
Return False

--  作者:大红袍
--  发布时间:2016/1/22 15:34:00
--  

贴出你写的函数。


--  作者:stone9434
--  发布时间:2016/1/22 15:34:00
--  
实际上没有改动其他东西,就只改动了_UserType  _UserGroup _UserName 


--  作者:stone9434
--  发布时间:2016/1/22 15:35:00
--  
请高手指教,问题出在哪里


--  作者:大红袍
--  发布时间:2016/1/22 15:35:00
--  

这段去掉试试

 

If _UserType <> UserTypeEnum.User Then \' 如果是开发者或者管理员
    Return True \'则具备所有权限
End If


--  作者:stone9434
--  发布时间:2016/1/22 15:36:00
--  
好,我试试看
--  作者:stone9434
--  发布时间:2016/1/22 15:39:00
--  
去掉那段代码后,所有用户点击都会显示“不存在物料采购分组!,然后显示我设定的弹窗”无审核权限“


--  作者:stone9434
--  发布时间:2016/1/22 15:39:00
--  
已经授权审核的人也不能打开


--  作者:大红袍
--  发布时间:2016/1/22 15:41:00
--  
 说明你表数据有问题啊,授权表必须 "物料采购","审核" 的数据啊