以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  授权表中,设置禁止删除列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=89990)

--  作者:misamisali
--  发布时间:2016/9/2 16:57:00
--  授权表中,设置禁止删除列
想在授权表上,设置禁止删除某表的列,代码错误了?
图片点击可在新窗口打开查看此主题相关图片如下:禁止删除.png
图片点击可在新窗口打开查看

代码如下:

Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("分组名 = \'" & User.Group & "\'" )
        If dr.IsNull("列名") Then
            Tables(dr("表名")).Visible = Not dr("不可见")
            Tables(dr("表名")).AllowEdit = Not dr("不可编辑")
            Tables(dr("表名")).DeleteColumn = Not dr("不可删除")
        Else
            Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑") 
            Tables(dr("表名")).Cols(dr("列名")).DeleteColumn = Not dr("不可编辑") 
        End If
    Next
End If

--  作者:狐狸爸爸
--  发布时间:2016/9/2 17:10:00
--  

Col并没有DeleteColumn属性,所以下面的代码不行的:

 

Tables(dr("表名")).Cols(dr("列名")).DeleteColumn = Not dr("不可编辑") 

 

通常是从禁用菜单中的删除列按钮:

 

RibbonTabs("Table").Groups("Column").Items("DeleteColumn").Enabled = Not dr("不可编辑") 


--  作者:misamisali
--  发布时间:2016/9/2 17:12:00
--  
在哪个事件上写?
--  作者:狐狸爸爸
--  发布时间:2016/9/2 17:14:00
--  

Tables(dr("表名")).Cols(dr("列名")).DeleteColumn = Not dr("不可编辑") 

 

改为:

 

RibbonTabs("Table").Groups("Column").Items("DeleteColumn").Enabled = Not dr("不可编辑") 


--  作者:misamisali
--  发布时间:2016/9/2 17:20:00
--  

For Each t As Table In Tables  \'根据授权表授权
    t.Visible = True
    t.AllowEdit = True
    For Each c As Col In t.Cols
        c.Visible = True
        c.AllowEdit = True
    Next
Next
Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("分组名 = \'" & User.Group & "\'" )
        If dr.IsNull("列名") Then
            Tables(dr("表名")).Visible = Not dr("不可见")
            Tables(dr("表名")).AllowEdit = Not dr("不可编辑")
        Else
            Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑") 
              RibbonTabs("表名").Groups("列名").Items("不可删除").Enabled = Not dr("不可删除")             
   End If
    Next

修改代码后,还是不能禁止删除?

--  作者:狐狸爸爸
--  发布时间:2016/9/2 17:29:00
--  

只能自己设计菜单,修改删除按钮的代码,在删除代码之前判断是否有权限,有权限才执行删除列的代码。

 


--  作者:misamisali
--  发布时间:2016/9/2 17:31:00
--  
这个我会,只能开发者才能删除列,代码要怎么改:
删除列(加条件,只有开发者才能删除列):Syscmd.Column.Delete()

--  作者:有点蓝
--  发布时间:2016/9/2 17:35:00
--  
If User.Type = UserTypeEnum.Developer Then
Syscmd.Column.Delete()
endif