Foxtable(狐表)用户栏目专家坐堂 → 授权表中,设置禁止删除列


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

主题:授权表中,设置禁止删除列

帅哥哟,离线,有人找我吗?
misamisali
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:220 积分:1751 威望:0 精华:0 注册:2016/3/2 9:22:00
授权表中,设置禁止删除列  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:220 积分:1751 威望:0 精华:0 注册:2016/3/2 9:22:00
  发帖心情 Post By:2016/9/2 17:12:00 [只看该作者]

在哪个事件上写?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/9/2 17:14:00 [只看该作者]

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

 

改为:

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
misamisali
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:220 积分:1751 威望:0 精华:0 注册:2016/3/2 9:22:00
  发帖心情 Post By: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

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

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/9/2 17:29:00 [只看该作者]

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

 


 回到顶部
帅哥哟,离线,有人找我吗?
misamisali
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:220 积分:1751 威望:0 精华:0 注册:2016/3/2 9:22:00
  发帖心情 Post By:2016/9/2 17:31:00 [只看该作者]

这个我会,只能开发者才能删除列,代码要怎么改:
删除列(加条件,只有开发者才能删除列):Syscmd.Column.Delete()

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/2 17:35:00 [只看该作者]

If User.Type = UserTypeEnum.Developer Then
Syscmd.Column.Delete()
endif


 回到顶部