以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  这段代码 放在菜单的click事件里,为什么会有问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=20810)

--  作者:akzzwj
--  发布时间:2012/6/20 12:53:00
--  这段代码 放在菜单的click事件里,为什么会有问题

我在菜单的click事件里,加入了以下代码:

If Functions.Execute("ShouQuan","材料出库单","浏览")   Then
    Forms("材料出库单_左").Open()
    MainTable = Tables("材料出库单")
Else
    Messagebox.Show("对不起,你没有操作权限")
End If
我明明 授权给 李强 财务出库单 浏览 权限 可是用 李强登陆后, 点击 浏览 还是显示 “对不起,你没有操作权限”,请问代码 哪里出错了?


--  作者:akzzwj
--  发布时间:2012/6/20 13:03:00
--  
ShouQuan 函数的代码为: 

If User.Type <> 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 = 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 = User.Group OrElse nm = User.Name Then \'如果授权用户包括登录用户所属的分组或其用户名
           
Return True \'返回True
       
End If

    Next
End If
Return False

 

我用的是自定义用户登陆。

我猜测 应该是shouquan的代码 有问题?请问 该怎么调整代码呢?


--  作者:狐狸爸爸
--  发布时间:2012/6/20 14:15:00
--  

如果自定义登陆,就不应该用User.Name

你看看自定义用户管理最后的总结:

http://www.foxtable.com/help/topics/2048.htm