Foxtable(狐表)用户栏目专家坐堂 → [求助]目录树授权的自定义函数(已解决)


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

主题:[求助]目录树授权的自定义函数(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]目录树授权的自定义函数(已解决)  发帖心情 Post By:2012/10/16 10:50:00 [只看该作者]

根据登录用户名,按用户表姓名所对应的权限内容(内含多值字段)来设置权限,请教各位老师,对帮助中的自定义函数ShouQuan如何修改,谢谢!!

 

 


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

[此贴子已经被作者于2012-10-16 15:05:01编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/16 11:10:00 [只看该作者]

 多值字段的话,直接用 like '* *' 就可以解决了。

 你的表中,用户列是单值,帮你去掉了循环。应该可以。

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 yh As String = dr("用户")
    If yh = User.Group OrElse yh = User.Name Then '如果授权用户包括登录用户所属的分组或其用户名
        Return True '返回True
    End If
End If
'然后判断权限的授权用户是否包括此用户或此用户所属的分组
If Args(1) = "" Then
    Return False
End If
dr = dt.Find("分组 = '" & args(0) & "' And 权限 like '*" & 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 yh As String = dr("用户")
    If yh = User.Group OrElse yh = User.Name Then '如果授权用户包括登录用户所属的分组或其用户名
        Return True '返回True
    End If
End If
Return False

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/10/16 11:25:00 [只看该作者]

谢谢lin_hailun老师的回复,好像代码有问题,在命令窗口运行如下代码时出错,还请指教,谢谢!!

 

If Functions.Execute("ShouQuan","生产") Then
    MessageBox.Show("生产")
End If

 

 


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

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/16 11:34:00 [只看该作者]

 把 分组 改成 部门
 把 用户 改成 姓名
[此贴子已经被作者于2012-10-16 11:34:13编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]代码出错,求助修改  发帖心情 Post By:2012/10/16 12:32:00 [只看该作者]

谢谢lin_hailun老师的回复,按照lin_hailun老师的提示修改后,将DataTables("授权")改成DataTables("用户"),

并将dr = dt.Find("部门 = '" & args(0) & "' And 权限 Is Null" )改成dr = dt.Find("部门 = '" & args(0) & "' And 权限 Is Not Null" )

在命令窗口运行
If Functions.Execute("ShouQuan","生产") Then
MessageBox.Show("生产")
End If

只有黄色部分为登录用户的部门时,代码才能正确运行,否则出错,而要求黄色部分应该是指定的权限,而不是部门。问题出在哪里,还请各位老师指教,谢谢!!

[此贴子已经被作者于2012-10-16 13:35:42编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/10/16 12:45:00 [只看该作者]

帮助中目录树授权的案例反映的是某个权限有哪些用户,而此案例反映的是某个用户有哪些权限,估计这个自定义函数代码的结构应有大的调整,所以还请各位老师费心指教,谢谢!!


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/16 13:45:00 [只看该作者]

 楼主,直接自己写算了,代码这样。

Dim dt As DataTable = DataTables("用户")
If args(0) = "" Then Return False
Dim dr As DataRow = dt.Find("部门 = '" & user.Group & "' And 姓名= '" & user.Name & "' And 权限 like '*" & args(0) & "*'")
If dr Is Nothing Then Return False
Return True

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/10/16 15:04:00 [只看该作者]

谢谢lin_hailun老师,函数代码测试成功,短短五行代码解决问题,真是神了,功底就是不一样!!再次感谢lin_hailun老师!!

 回到顶部