以下为不同用户控制锁定列的代码,我以前的软件都好用,最近几天编的软件不起作用了,只是现在其中用了一个折叠表。但是不是折叠表的窗口表也不起用
'因为要进入窗口状态显示,所以软件打开时所有表都要隐藏不可见和不可编辑
For Each t1 As Table In Tables '把表名称循环出来为t
t1.Visible = False
'所有表隐藏
For Each c1 As Col
In t1.Cols '循环出所有列为c
c1.Visible =
False '所有列不可见
c1.AllowEdit =
False '所有列不可编辑
Next
Next
Forms("登录窗口").Show() '开始打开登录窗口
Dim roles() As String = _userGroup.Split(",") '定义roles()为数组
为用登录用户组,号分割
For Each role As String In roles '定义role为roles() 用户组中字符串
Dim drs1 As
List(Of DataRow) = DataTables("权限").Select("可见 = '" &
role & "' or 可见 like '" & role & ",*' or 可见 like
'*," & role & ",*' Or 可见 like '*," & role &
"'") 'drs为行的集合 权限表中可见符合条件的用户组名
For Each dr1 As
DataRow In drs1 '在符合条件用户组中循环
If
dr1.Isnull("表名") AndAlso dr1.Isnull("列名") Then '如果登录用户组当前行的表名为空和列名同时为空则
For Each
t1 As Table In Tables ''把空表名称循环出来为t
t1.Visible = True '所有表显示
Next
Else If
dr1.isnull("列名") Then '如果列名为空则
Tables(dr1("表名")).Visible = True '表显示
For Each c1 As
Col In Tables(dr1("表名")).Cols '循环出所有空列为c
c1.Visible
= True '所有列可见
Next
Else
Tables(dr1("表名")).Visible = True '相当于列名不为空时显示表名
For Each c1 As Col In Tables(dr1("表名")).Cols
'循环出所有表名列为c
If dr1("列名") = c1.name OrElse dr1("列名") Like c1.name & ",*" OrElse dr1("列名") Like "*," & c1.name &
",*" OrElse dr1("列名")
Like "*," & c1.name Then
c1.Visible = True
End If
Next
End If
Next
drs1 =
DataTables("权限").Select("可编辑 = '" & role & "'
or 可编辑 like '" & role & ",*' or 可编辑 like '*," & role
& ",*' Or 可编辑 like '*," & role & "'")'包含登陆名的行表成集合
For Each dr1 As
DataRow In drs'有登陆名的行循环
If
dr1.Isnull("表名") AndAlso dr1.Isnull("列名") Then'如果表名与列名为空
For Each
t1 As Table In Tables't在所有表中循环
t1.Visible = True't表可见
t1.AllowEdit = True't表可编辑
Next
Else If
dr1.isnull("列名") Then'如果列名为空
Tables(dr1("表名")).Visible = True'表名可见
For Each c1 As
Col In Tables(dr1("表名")).Cols 't在所有表中的列循环
c1.Visible
= True'列可见
c1.AllowEdit = True'列可编辑
Next
Else
Tables(dr1("表名")).Visible = True
For Each c1 As Col In Tables(dr1("表名")).Cols
If dr1("列名") = c1.name OrElse dr1("列名") Like c.name & ",*" OrElse
dr("列名") Like
"*," & c.name & ",*" OrElse dr("列名") Like "*," & c.name Then
c1.Visible = True
c1.AllowEdit = True
End If
Next
End If
Next
TableCaptionVisible = False '隐藏表标题
Forms("导航测一").Open()
Forms("主窗口").Open()
MainTable = Tables("首页")