Foxtable(狐表)用户栏目专家坐堂 → 授权表管理菜单和窗口


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

主题:授权表管理菜单和窗口

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
授权表管理菜单和窗口  发帖心情 Post By:2017/2/13 8:39:00 [只看该作者]

如题,帮助文件中有授权表管理表和列的详细说明,但是窗口.命令中没有button,请问如何写代码,可以直接在授权表中控制菜单和窗口的授权?

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


加好友 发短信
等级:超级版主 帖子:106665 积分:542508 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/13 9:02:00 [只看该作者]

参考:

http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=77866

http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=88525

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2017/2/13 13:22:00 [只看该作者]

目录树形式的授权是不是可以授权窗口?最后一项“使用说明”中的代码

If Functions.Execute("ShouQuan","订单管理","批准订单") Then
   
'用于批准订单的代码

End If应该放在哪?
[此贴子已经被作者于2017/2/13 14:02:22编辑过]

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2017/2/13 14:05:00 [只看该作者]

目录树形式的授权是不是可以授权窗口?想要授权窗口和窗口中的按钮,最后一项“使用说明”中的代码

If Functions.Execute("ShouQuan","订单管理","批准订单") Then
    
'用于批准订单的代码

End If应该放在哪?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/13 14:15:00 [只看该作者]

回复3楼。任何地方进行判断都可以。代码直接写在对应按钮的click事件去。


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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2017/2/14 9:24:00 [只看该作者]

我设计了一个界面窗口,里面一个按钮是客户录入,在“授权”表分组列里录入了界面窗口,在权限列里录入了客户录入,我在click里写的是

If Functions.Execute("ShouQuan","界面窗口","批准订单") Then
   forms("客户录入").open

MainTable = Tables("客户录入")

forms("界面窗口").close '用于批准订单的代码
End If


结果一点击客户录入按钮,就提示我没有界面窗口分组


到底哪里设置有问题呢?


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/14 10:15:00 [只看该作者]

方法一:改数据,权限表,加一行 界面分组 的数据,另一列留空;

 

方法二:改代码 shouquan 函数

 

If args(1) = nothing Then '如果只是填写了分组

    '第一段代码

Else

    '第二段代码

End If


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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2017/2/14 10:38:00 [只看该作者]

能否详细点?小白看不懂。。。。图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/14 11:08:00 [只看该作者]

用方法二吧。

改一下自定义函数的代码

 

If User.Type <> UserTypeEnum.User Then ' 如果是开发者或者管理员
    Return True '则具备所有权限
End If
Dim dt As DataTable = DataTables("授权")
Dim dr As DataRow
If Args(1) = "" Then
    '首先判断分组的授权用户是否包括此用户或此用户所属的分组
    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
    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


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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2017/2/14 13:44:00 [只看该作者]

好用了,谢谢!图片点击可在新窗口打开查看

 回到顶部