以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 数据查看范围的权限 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=158125) |
||||
-- 作者:weibu -- 发布时间:2020/11/9 12:00:00 -- 数据查看范围的权限
老师在上面实例中,有人员信息表, 如果这个人对应数据查看范围是“本部门”,他登陆系统能查看跟他一个部门的所有人的“日报、周报、月报、项目管理的数据” 如果是“本部门及下级”,他登陆系统能查看自己部门和这个部门包含所有下级部门的人的“日报、周报、月报、项目管理的数据” 如果是“仅自己”,他登陆仅能看自己的数据; 部门上下及的关系,是通过表“部门信息”获取;您看下,已部门ID作为依据,怕部门名称修改; 老师我想需求两个帮助: 1.这个代码如何写,特别是如果查看所有下级的数据代码? 2.我想在一个地方设置,所有的业务数据表都可以按此代码加载数据,该如何做?
|
||||
-- 作者:有点蓝 -- 发布时间:2020/11/9 13:42:00 -- http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=154336&authorid=0&page=0&star=2 用法基本一样,管理者就是“本部门及下级”,职员就是“仅自己”,本部门参考例子的用法,去掉获取下级的代码即可
|
||||
-- 作者:weibu -- 发布时间:2020/11/9 22:07:00 -- 谢谢我测试数据时,提示索引超出数组界限;是什么原因? 还有个我在“daily”和“xmgl”表中都加了departid字段。想实现直接通过departid进行实现此功能,该如何修改? 搞了一下午还是没搞定,求教老师
|
||||
-- 作者:有点蓝 -- 发布时间:2020/11/9 22:41:00 -- 写了什么代码?贴出来。 如果加了部门id,直接通过部门id查询即可,不需要获取人员id了
|
||||
-- 作者:weibu -- 发布时间:2020/11/9 22:48:00 -- getchild代码没变 getname:代码
Dim dr As DataRow = DataTables("userinfo").Find("sname=\'" & user.Name & "\'") If dr IsNot Nothing Then Select Case dr("role") Case "本部门及下级" Dim lst2 As new List(of String) lst2.Add(dr("departid")) Functions.Execute("getdchild",lst2,dr("departid")) Return String.Join(",",lst2.ToArray) Case "本部门" Return dr("departid") Case "仅自己" Return dr("personid") Case Else Return Nothing End Select Else Return Nothing End If LoadUserSetting代码: Dim dr As DataRow = DataTables("userinfo").SQLFind("sname=\'" & user.Name & "\'") Dim str As String = Functions.Execute("getderpart") If str > "" Then If dr("role") <> "仅自己" DataTables("daily").LoadFilter = "departid in (\'" & str.Replace(",","\',\'") & "\')" DataTables("dailyday").LoadFilter = "departid in (\'" & str.Replace(",","\',\'") & "\')" Else DataTables("daily").LoadFilter = "personid in (\'" & str.Replace(",","\',\'") & "\')" DataTables("dailyday").LoadFilter = "personid in (\'" & str.Replace(",","\',\'") & "\')" End If Else DataTables("daily").LoadFilter = "_Identify is null" DataTables("dailyday").LoadFilter = "_Identify is null" End If DataTables("daily").Load DataTables("dailyday").Load [此贴子已经被作者于2020/11/9 22:50:08编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/11/9 23:01:00 -- DataTables("daily").LoadFilter = "[_Identify] is null" |