Foxtable(狐表)用户栏目专家坐堂 → 单选项及多选目录树保存问题


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

主题:单选项及多选目录树保存问题

美女呀,离线,留言给我吧!
采菊东篱下
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/14 18:56:00 [显示全部帖子]

保存按钮删除授权表原的数据、重新添加,且当你行得通,但当点击左边的TreeView2目录树,右边的TreeView1目录树根据授权表自动勾选对应数据,你总不能删除授权表里的数据吧?依然要查,这速度还是慢。
[此贴子已经被作者于2022/6/14 20:42:06编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/17 10:07:00 [显示全部帖子]

   只要曾操作过系统的用户,离职后就不允许修改删除,历年的人和对其授予的这么多行权限,如不用SQL打开软件将很慢,因此SQL不能改,我现在想只保存打勾的目录树行,这样写提示报错:
.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2022.5.29.2
错误所在事件:窗口,授权窗口,保存,Click
详细错误信息:
Object reference not set to an instance of an object.

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim nd2 As WinForm.TreeNode = trv2.SelectedNode
If nd2.Level = 2 Then
    Dim di As DataRow = DataTables("软件用户列表").SQLFind("[姓名] = '" & nd2.Name & "' And ([锁定] Is Null or [锁定] = false)")
    If di IsNot Nothing Then
        Dim rdo As WinForm.CheckBox
        rdo = e.Form.Controls("CheckBox1")
        If rdo.Checked = True Then
            di("授权权限") = True
        Else
            di("授权权限") = False
        End If
    End If
    di.Save()
    DataTables("软件用户列表").load
    For Each nd1 As WinForm.TreeNode In e.Form.Controls("TreeView1").AllNodes
        If nd1.Level = 2 Then
            Dim Value() As String
            Value = nd1.FullPath.Split("\")
            Dim dt As DataRow = DataTables("权限列表").SQLFind("[姓名] = '" & nd2.Name & "'And [版块管理] = '" & Value(0) & "' And [权限分配] = '" & Value(1) & "'") 
            Dim da As DataRow = DataTables("授权表").SQLFind("[用户姓名] = '" & nd2.Name & "' And [版块管理] = '" & Value(0) & "' And [权限分配] = '" & Value(1) & "' And ([锁定] Is Null Or [锁定] = false)")
            DataTables("授权表").SQLDeleteFor("[用户姓名] = '" & nd2.Name & "' And ([锁定] Is Null Or [锁定] = false)")
            For Each c As DataCol In DataTables("权限列表").DataCols
                For Each c1 As DataCol In DataTables("授权表").DataCols
                    If da Is Nothing And c.Name = c1.Name And nd1.Name = c1.Name And nd1.Checked = True Then
                        Dim da1 As DataRow = DataTables("授权表").AddNew()
                        da1("用户姓名") = nd2.Name
                        da1(c1) = dt(c)
                    End If
                    If c1.Name = "所属部门" OrElse c1.Name = "职位" OrElse c1.Name = "用户姓名" OrElse c1.Name = "版块管理" OrElse c1.Name = "表名" OrElse c1.Name = "权限分配" OrElse c1.Name = "锁定" Then
                        Continue For
                    ElseIf nd1.Name = c1.Name And nd1.Checked = True Then
                        da(c1) = True
                    ElseIf nd1.Name = c1.Name And nd1.Checked = False Then 
                        da(c1) = False
                    End If
                    da.Save()
                Next
            Next
        End If
    Next
    DataTables("授权表").load
End If

 回到顶部
总数 13 上一页 1 2