以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]目录树授权的自定义函数(已解决) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=24514) |
||||
-- 作者:yyzlxc -- 发布时间:2012/10/16 10:50:00 -- [求助]目录树授权的自定义函数(已解决) 根据登录用户名,按用户表姓名所对应的权限内容(内含多值字段)来设置权限,请教各位老师,对帮助中的自定义函数ShouQuan如何修改,谢谢!!
[此贴子已经被作者于2012-10-16 15:05:01编辑过]
|
||||
-- 作者:lin_hailun -- 发布时间: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 -- 发布时间:2012/10/16 11:25:00 -- 谢谢lin_hailun老师的回复,好像代码有问题,在命令窗口运行如下代码时出错,还请指教,谢谢!!
If Functions.Execute("ShouQuan","生产") Then
此主题相关图片如下:m.jpg |
||||
-- 作者:lin_hailun -- 发布时间:2012/10/16 11:34:00 -- 把 分组 改成 部门 把 用户 改成 姓名 [此贴子已经被作者于2012-10-16 11:34:13编辑过]
|
||||
-- 作者:yyzlxc -- 发布时间: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" ) 在命令窗口运行 只有黄色部分为登录用户的部门时,代码才能正确运行,否则出错,而要求黄色部分应该是指定的权限,而不是部门。问题出在哪里,还请各位老师指教,谢谢!! [此贴子已经被作者于2012-10-16 13:35:42编辑过]
|
||||
-- 作者:yyzlxc -- 发布时间:2012/10/16 12:45:00 -- 帮助中目录树授权的案例反映的是某个权限有哪些用户,而此案例反映的是某个用户有哪些权限,估计这个自定义函数代码的结构应有大的调整,所以还请各位老师费心指教,谢谢!! |
||||
-- 作者:lin_hailun -- 发布时间: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 -- 发布时间:2012/10/16 15:04:00 -- 谢谢lin_hailun老师,函数代码测试成功,短短五行代码解决问题,真是神了,功底就是不一样!!再次感谢lin_hailun老师!! |