以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  副表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=170068)

--  作者:qazlinle6
--  发布时间:2021/7/10 19:51:00
--  副表

For Each dr55 As DataRow In DataTables("表权限").sqlSelect("\',\'+角色用户+\',\' like \'%," & _userGroup & ",%\' " )

  If dr55.Isnull("表名") AndAlso dr55.Isnull("列名") Then
            For Each t As Table In Tables
                t.Visible = Not dr55("权限表不可见")
                t.AllowEdit = Not dr55("权限表不可编缉")
            Next
       Else If dr55.isnull("列名") Then
            Tables(dr55("表名")).Visible = Not dr55("权限表不可见")
            For Each c As Col In Tables(dr55("表名")).Cols
                c.Visible = Not dr55("权限表不可见")
                c.AllowEdit = Not dr55("权限表不可编缉")
            Next
        Else
            Tables(dr55("表名")).Visible = Not dr55("权限表不可见")
            For Each c As Col In Tables(dr55("表名")).Cols
                If dr55("列名") = c.name OrElse dr55("列名") Like c.name & ",*" OrElse dr55("列名") Like "*," & c.name & ",*" OrElse dr55("列名") Like "*," & c.name Then
                    c.Visible = Not dr55("权限表不可见")
                    c.AllowEdit = Not dr55("权限表不可编缉")
                End If
            Next
        End If
    Next



这个权限对副表不起做用

Tables("窗口1_Table1").SetColVisibleWidth(Tables("订单").GetColVisibleWidth())


可不可以像这个代码跟着订单表锁定列
[此贴子已经被作者于2021/7/11 16:32:14编辑过]

--  作者:有点蓝
--  发布时间:2021/7/11 20:34:00
--  
把副本名称也加到权限表里,然后在窗口afterload事件,查询权限表,窗口表是否需要控制权限,然后同样的方法设置即可。

简单的可以把下面代码放到窗口afterload
Tables("窗口1_Table1").SetColVisibleWidth(Tables("订单").GetColVisibleWidth())

--  作者:qazlinle6
--  发布时间:2021/7/11 20:48:00
--  
这个
窗口1_Table1
加到表权限里表名上吗
[此贴子已经被作者于2021/7/11 20:49:58编辑过]

--  作者:有点蓝
--  发布时间:2021/7/11 21:13:00
--  
是,和主表用法一样
--  作者:qazlinle6
--  发布时间:2021/7/11 21:32:00
--  

For Each dr55 As DataRow In DataTables("表权限").sqlSelect("\',\'+角色用户+\',\' like \'%," & _userGroup & ",%\' " )

  If dr55.Isnull("表名") AndAlso dr55.Isnull("列名") Then
            For Each t As Table In Tables
                t.Visible = Not dr55("权限表不可见")
                t.AllowEdit = Not dr55("权限表不可编缉")
            Next
       Else If dr55.isnull("列名") Then
            Tables(dr55("表名")).Visible = Not dr55("权限表不可见")
            For Each c As Col In Tables(dr55("表名")).Cols
                c.Visible = Not dr55("权限表不可见")
                c.AllowEdit = Not dr55("权限表不可编缉")
            Next
        Else
            Tables(dr55("表名")).Visible = Not dr55("权限表不可见")
            For Each c As Col In Tables(dr55("表名")).Cols
                If dr55("列名") = c.name OrElse dr55("列名") Like c.name & ",*" OrElse dr55("列名") Like "*," & c.name & ",*" OrElse dr55("列名") Like "*," & c.name Then
                    c.Visible = Not dr55("权限表不可见")
                    c.AllowEdit = Not dr55("权限表不可编缉")
                End If
            Next
        End If
    Next
这个代码不改吗,只要表名改成副表的就行吗



--  作者:有点蓝
--  发布时间:2021/7/11 21:42:00
--  
看2楼,窗口表权限到窗口afterload事件处理,窗口没有打开,上面代码是没有任何作用的
--  作者:qazlinle6
--  发布时间:2021/7/12 9:50:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq浏览器截图20210712094955.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2021/7/12 9:56:00
--  
窗口没有打开,上面代码是没有任何作用的,而且会出错。

如果不是副本,仍然还是按照主表的名称使用

--  作者:qazlinle6
--  发布时间:2021/7/12 10:03:00
--  
可这样用副表名,我原来权限代码要岀错
--  作者:有点蓝
--  发布时间:2021/7/12 10:07:00
--  
增加一个逻辑列,副本就勾选,5楼这种代码改为查询不是副本的表