Foxtable(狐表)用户栏目专家坐堂 → [求助]关于Select Case求助


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

主题:[求助]关于Select Case求助

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]关于Select Case求助  发帖心情 Post By:2015/6/2 12:51:00 [只看该作者]

整了二天,终于搞定目录树授权,并且用户名表与授权表全是在后台的,启动项目时不加载,参考了夕然的视频教程,现在有个问题请老师帮助解决一下。
项目中的每个功能是通过一个主窗口中的按钮进入的,所有按钮我设置成了不可用,然后在主窗口打开时执行了以下代码,但这代码好啰嗦,想用Select Case做,但这里涉及到了内部函数“ShouQuan”,不知如何改了,请帮我改下,谢谢!
If Functions.Execute("ShouQuan","合同管理","") Then
e.Form.Controls("Button_采购合同录入").Enabled = True
e.Form.Controls("Button_采购合同查询").Enabled = True
e.Form.Controls("Button_销售合同录入").Enabled = True
e.Form.Controls("Button_销售合同打印").Enabled = True
End If

If Functions.Execute("ShouQuan","合同管理","采购合同录入") Then
e.Form.Controls("Button_采购合同录入").Enabled = True
End If

If Functions.Execute("ShouQuan","合同管理","采购合同查询") Then
e.Form.Controls("Button_采购合同查询").Enabled = True
End If

If Functions.Execute("ShouQuan","合同管理","销售合同录入") Then
e.Form.Controls("Button_销售合同录入").Enabled = True
End If

If Functions.Execute("ShouQuan","合同管理","销售合同打印") Then
e.Form.Controls("Button_销售合同打印").Enabled = True
End If

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


加好友 发短信
等级:三尾狐 帖子:770 积分:7807 威望:0 精华:0 注册:2014/4/21 15:16:00
  发帖心情 Post By:2015/6/2 12:57:00 [只看该作者]

你要把内部函数的参数和返回值贴出来


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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/6/2 13:00:00 [只看该作者]

以下是函数的内容,其实就是教程里的,我改了下:
If User.Type <> UserTypeEnum.User Then ' 如果是开发者或者管理员
    Return True '则具备所有权限
End If

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 '如果授权用户包括登录用户所属的分组或其用户名
            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 '如果授权用户包括登录用户所属的分组或其用户名
            Return True '返回True
        End If
    Next
End If
Return False
[此贴子已经被作者于2015/6/2 12:59:54编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/2 14:19:00 [只看该作者]

 代码像你1楼那样写。

 

 如果要简写的话,就必须用一个表,去记录每个权限那些控件可用,取出值,设置。如表

 

权限  窗口 控件


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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/6/2 14:33:00 [只看该作者]

我现在用的是目录树授权的方式,

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看
此窗体中用的代码全部针对后台操作,在后台中有一张授权表,

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

我这种授权结构,有什么好办法做到简便吗,目前这种结构,我在主窗体中增加了按钮后,要去授权管理中添加相应的分组与权限,再回过头上去主窗口的load中增加如我一楼所写的相应代码,整体维护操作起来有点累啊!

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/2 14:36:00 [只看该作者]

 之前已经告诉过你了啊,把窗口、控件、菜单等等全部列出来,什么权限可以用,设计到表里面去。


 回到顶部