Foxtable(狐表)用户栏目专家坐堂 → 权限


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

主题:权限

帅哥,在线噢!
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

怎么个自动法?神仙才知道要指定哪个控件。详细说明一下要做的功能

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


加好友 发短信
等级:七尾狐 帖子:1503 积分:10158 威望:0 精华:0 注册:2013/6/8 16:19:00
  发帖心情 Post By:2021/6/26 11:32:00 [只看该作者]

表里控件名跟窗口控件名一样的名称

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


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

方法1、遍历所有控件获取名称:http://www.foxtable.com/webhelp/topics/1849.htm
For Each c As WinForm.Control In e.Form.Controls
  
For Each dr  As DataRow In DataTables("窗口权限").sqlSelect(" ','+角色用户+',' like '%," & _userGroup & ",%'  And  窗口名 = '" & e.Form.Name & "' and 控件名='" & c.name & "' " )
……
Next

2、获取表格这个窗口对应的所有行,逐个判断窗口是否存在这个控件:http://www.foxtable.com/webhelp/topics/1409.htm

For Each dr  As DataRow In DataTables("窗口权限").sqlSelect(" ','+角色用户+',' like '%," & _userGroup & ",%'  And  窗口名 = '" & e.Form.Name & "'" )
if e.form.ExistControl(dr("控件名")) then
……


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


加好友 发短信
等级:七尾狐 帖子:1503 积分:10158 威望:0 精华:0 注册:2013/6/8 16:19:00
  发帖心情 Post By:2021/6/26 14:30:00 [只看该作者]

For Each c As WinForm.Control In e.Form.Controls
For Each dr  As DataRow In DataTables("窗口权限").sqlSelect(" ','+角色用户+',' like '%," & _userGroup & ",%'  And  窗口名 = '" & e.Form.Name & "' And ','+控件名+','like '%," & c.name & ",%' " )
    
    If  dr.isnull("权限日期天数")=False Then
    If e.Sender.Value < Date.Today.AddDays(dr("权限日期天数")) OrElse e.Sender.Value > Date.Today Then
        messagebox.show("不能选择大于今天和小于" & dr("权限日期天数") & "天的日期")
        e.Cancel=True
    End If
   End If 

Next
Next

可不可以简化一下,有点卡,还要提示两次

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


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

改为第二种用法,如果数据多,控件多,卡是正常的

如果不想提示多次,第一次提示后就退出

    If e.Sender.Value < Date.Today.AddDays(dr("权限日期天数")) OrElse e.Sender.Value > Date.Today Then
        messagebox.show("不能选择大于今天和小于" & dr("权限日期天数") & "天的日期")
        e.Cancel=True
return
……
[此贴子已经被作者于2021/6/26 14:57:16编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1503 积分:10158 威望:0 精华:0 注册:2013/6/8 16:19:00
  发帖心情 Post By:2021/6/26 17:12:00 [只看该作者]

For Each dr  As DataRow In DataTables("表权限").sqlSelect(" ','+角色用户+',' like '%," & user.Roles & ",%'  And  表名 = '进货退货' ")



表名=本表
什么改

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


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

本表指当前选中的表?

For Each dr  As DataRow In DataTables("表权限").sqlSelect(" ','+角色用户+',' like '%," & user.Roles & ",%'  And  表名 = '" & currenttable.name & "' ")

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


加好友 发短信
等级:七尾狐 帖子:1503 积分:10158 威望:0 精华:0 注册:2013/6/8 16:19:00
  发帖心情 Post By:2021/6/26 17:35:00 [只看该作者]


For Each dr As DataRow In DataTables("表权限").Select("','+角色用户+',' like '%," & _userGroup & ",%' " )
    If dr.IsNull("列名") Then
        For Each t As Table In Tables
            If t.DataTable.Name = dr("表名") Then
                t.Visible = Not dr("权限表不可见")
                t.AllowEdit = Not dr("权限表不可编缉")
            End If
        Next
    Else
        For Each t As Table In Tables
            If t.DataTable.Name = dr("表名") Then
                For Each c As Col In t.Cols
                    If c.Name = dr("列名") Then
                        c.Visible = Not dr("权限表不可见")
                        c.AllowEdit = Not dr("权限表不可编缉")
                    End If

                Next
            End If
        Next
End If
Next

不可编缉列,什么还是可以


用自定义用户与权限管理之二  是不是不起做用

[此贴子已经被作者于2021/6/26 17:37:34编辑过]

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


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

不起作用只能说是权限设置不正确,调试看看

        For Each t As Table In Tables
msgbox(dr("表名"))
            If t.DataTable.Name = dr("表名") Then
msgbox(1)
                For Each c As Col In t.Cols
msgbox(c.Name)
                    If c.Name = dr("列名") Then
msgbox(dr("权限表不可编缉"))
                        c.Visible = Not dr("权限表不可见")
                        c.AllowEdit = Not dr("权限表不可编缉")
msgbox(c.AllowEdit)
                    End If

                Next
            End If
        Next
End If
Next

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


加好友 发短信
等级:七尾狐 帖子:1503 积分:10158 威望:0 精华:0 注册:2013/6/8 16:19:00
  发帖心情 Post By:2021/6/28 9:13:00 [只看该作者]

用系统自带切换用户代码可以用,

用自定义用户与权限管理之二
切换用户就用不了

 回到顶部
总数 26 上一页 1 2 3 下一页