以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]统计授权表的权限  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92028)

--  作者:无限5180
--  发布时间:2016/10/24 16:58:00
--  [求助]统计授权表的权限
假设有一个授权表
要筛选出用户名为本人的所有权限和本人未取得的权限列出并填写到统计表中应该如何编写代码,请高手指教,拜托!

--  作者:有点蓝
--  发布时间:2016/10/24 17:14:00
--  
参考:http://www.foxtable.com/webhelp/scr/0681.htm
--  作者:无限5180
--  发布时间:2016/10/24 17:27:00
--  
授权表中的用户列为多值字段,我通过帮助中的代码已经统计出多值字段中各个用户各自的权限,但还需要进一步统计出各个用户未取得的权限,例如已经统计出本机用户的权限,未有的权限有哪些,要做的是其他用户权限中有与本机用户权限重叠的也要去除,剩余的才是未取得的权限
[此贴子已经被作者于2016/10/24 17:38:38编辑过]

--  作者:有点蓝
--  发布时间:2016/10/24 17:41:00
--  
上例子说明
--  作者:无限5180
--  发布时间:2016/10/24 19:49:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:目录树授权.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:查询用户已取得权限.png
图片点击可在新窗口打开查看

这是查询用户已经拥有得权限得目录树表

Dim value As String  = e.Form.Controls("DropBox1").value
If value = "" Then
    MessageBox.Show("请选择用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
    Return
Else
    Dim dt As DataTable
    Dim dtb As New DataTableBuilder("统计")
    dtb.AddDef("用户" ,Gettype(String), 100)
    dtb.AddDef("权限",Gettype(String), 150)
    dtb.AddDef("分组",Gettype(String), 90)
    dt = dtb.Build()
    Dim lst As New Dictionary(of String ,DataRow) \'定义一个字典,用于检索每个员工在统计表中对应的行
    For Each dr1 As DataRow In DataTables("shouquan").DataRows
        If dr1.IsNull("用户") = False Then  \'如果工号列不为空
            Dim nms() As String = dr1("用户").Split(",")  \'将工号列内容拆分成数组
            For Each nm As String In nms  \'遍历此行中参与权限的每个用户
                Dim dr2 As DataRow
                Dim dr21 As DataRow
                Dim key As String = nm & "|" & dr1("分组") & "|" & dr1("权限")  \'这里是关键,由工号和产品组成字典的关键词.
                If lst.ContainsKey(key)   \'如果集合中包括此关键词对应的行
                    dr2= lst(key)   \'将此行赋值给变量dr2
                Else
                    dr2 = dt.AddNew()   \'否则增加一行..
                    dr2("用户") = nm    \'新增行的工号列设置为此用户
                    dr2("权限") = dr1("权限")  \'设置增行的权限
                    dr2("分组") = dr1("分组")  \'设置增行的分组
                    lst.add(key,dr2)  \'将新增行添加到字典中,以便接下来检索
                End If
            Next
        End If
    Next    
    dt.RemoveFor("[用户] <>  \'"& value &"\'")    
    Dim trv As WinForm.TreeView = e.Form.Controls("TreeView3")
    trv.BuildTree(dt,"用户|分组|权限")
End If


查询用户未有的权限不知如何写代码,请帮忙指点一下

[此贴子已经被作者于2016/10/24 19:51:21编辑过]

--  作者:有点蓝
--  发布时间:2016/10/24 20:20:00
--  
上例子测试
--  作者:无限5180
--  发布时间:2016/10/24 20:39:00
--  
我上传的查询用户取得权限的代码没有问题,截图上也显示了,只是不会写查询用户未取得权限的代码不会写,这个还要什么测试,我不明白
--  作者:有点蓝
--  发布时间:2016/10/24 21:20:00
--  
只有运行通过的代码才是正确的代码。

没有数据结构,没有运行环境,我也没有办法去捏造代码。我也没有时间去根据你的图片去创建这样一个项目,并做出数据然后测试。

而这些东西你都有,只是导出授权表和窗口到一个新的项目中上传就可以

--  作者:无限5180
--  发布时间:2016/10/24 21:39:00
--  
好的,谢谢,我试一下
--  作者:无限5180
--  发布时间:2016/10/24 22:01:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

好老师我把例子做好了,请指点,谢谢!