Foxtable(狐表)用户栏目专家坐堂 → 关于权限控制代码


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

主题:关于权限控制代码

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


加好友 发短信
等级:四尾狐 帖子:860 积分:5964 威望:0 精华:0 注册:2016/4/15 22:24:00
关于权限控制代码  发帖心情 Post By:2023/6/25 15:46:00 [只看该作者]

老师,帮我看看,可视化授权怎么不起作用?蓝老师,请帮忙看看下面代码问题在哪里

自定义登录,数据储存在“外部数据”的“用户管理表”中,项目事件LoadUserSetting代码:

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

    Return

End If

For Each dr As DataRow In DataTables("授权表").Select("姓名 = '" & _UserName & "'" )

''For Each dr As DataRow In DataTables("授权表").Select("用户名 = '" & User.Name & "'" )

    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



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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/25 15:52:00 [只看该作者]

如果使用的是自定义用户管理,不需要把代码放到LoadUserSetting,放到登录窗口的确定按钮中

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


加好友 发短信
等级:四尾狐 帖子:860 积分:5964 威望:0 精华:0 注册:2016/4/15 22:24:00
代码  发帖心情 Post By:2023/6/25 16:11:00 [只看该作者]

这样写还是不行?
Dim bm As WinForm.ComboBox = e.Form.Controls("部门")
Dim zh As WinForm.TextBox = e.Form.Controls("账号")
Dim mm As WinForm.TextBox = e.Form.Controls("密码")
Dim xm As WinForm.ComboBox = e.Form.Controls("姓名")
If bm.Value ="" Then
    MessageBox.Show ("请选择部门!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
    Return
End If
If xm.Value ="" Then
    MessageBox.Show ("请选择姓名!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
    Return
End If
If zh.Value ="" Then
    MessageBox.Show ("请输入账号!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
    Return
End If
If mm.value = "" Then
    MessageBox.Show ("密码不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
    Return
End If

'判断部门账号是否一致
Dim dr As DataRow = DataTables("用户管理").Find("账号 = '" & zh.text & "'")
''Dim dr As DataRow = DataTables("用户管理").Find("账号 = '" & zh.text & "' and 部门='" & bm.text & "' and 姓名='" & xm.text & "'")
If dr Is Nothing Then
    MessageBox.Show ("账号不存在,请确认账号是否注册!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
    Return
End If

If  bm.value= dr("部门") And xm.value= dr("姓名") And zh.value= dr("账号") Then
    If  mm.value= dr("密码") Then
        If dr("用户状态") = "停用" Then  '如果前面部门或姓名只加载了启用状态的,此处不用判断
            MessageBox.Show ("您的账号还未启用或已停用,请与管理员联系!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
            Return
        End If
        Forms("登录").close
        Forms("主窗口").Open()
        MainTable = Tables("用户管理")  '打开主界面表
        e.Form.close
    Else
        MessageBox.Show ("密码错误,请重新输入!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
        Return
    End If
Else
    MessageBox.Show ("部门,姓名,账号不一致,请检查!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
    Return
End If

''"非自定义登录,可视化授权"代码放在在项目LoadUserSetting事件中。如果项目没有提供切换用户的功能,那么可以直接在AfterOpenProject事件中设置上述代码.自定义登录代码放在“登录”按钮中
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
MessageBox.Show(1)
Tables("授权表").Visible = (User.Type <> UserTypeEnum.User)
If User.Type <> UserTypeEnum.User Then
    Return
End If
MessageBox.Show(2)
For Each dr1 As DataRow In DataTables("授权表").Select("姓名 = '" & _UserName & "'")
''For Each dr1 As DataRow In DataTables("授权表").Select("用户名 = '" & User.Name & "'" )
MessageBox.Show(3)
    If dr1.IsNull("列名") Then
        For Each t As Table In Tables
            If t.DataTable.Name = dr1("表名") Then
                t.Visible = Not dr1("不可见")
                t.AllowEdit = Not dr1("不可编辑")
            End If
        Next
    Else
        For Each t As Table In Tables
            If t.DataTable.Name = dr1("表名") Then
                For Each c As Col In t.Cols
                    If c.Name = dr1("列名") Then
                        c.Visible = Not dr1("不可见")
                        c.AllowEdit = Not dr1("不可编辑")
                    End If
                Next
            End If
        Next
    End If
Next

''条件加载2
If _UserYhjb = "超级用户" Then ''超级用户指"系统管理员"
    DataTables("数据录入表2023").LoadFilter = "" '如果用户组是超级用户,加载所有行
    DataTables("数据录入表2023").AllowEdit = True ''允许编辑数据
ElseIf _UserYhjb = "1级用户" Then          ''1级用户指"经理"
    DataTables("数据录入表2023").LoadFilter = "" '如果用户组是1级用户,则加载所有行
    DataTables("数据录入表2023").AllowEdit = False '禁止用户修改表中数据,也就是锁定表
ElseIf _UserYhjb = "2级用户" Then    '2级用户指"主管"则加载包含主管和员工的行
    'DataTables("数据录入表2023").LoadFilter = "填报单位 like '%" & _UserGroup & "%'" '如果用户组是2级用户,加载本部门单位所有行
    DataTables("数据录入表2023").LoadFilter = "填报单位 = '" & _UserGroup & "'" '如果用户组是2级用户,加载本部门单位所有行
    DataTables("数据录入表2023").AllowEdit = True ''允许编辑数据
ElseIf _UserYhjb = "3级用户" Then 
   ' DataTables("数据录入表2023").LoadFilter = "填报人 like '%" & _UserName & "%'" '3级用户指"员工"加载登录者相关行
    DataTables("数据录入表2023").LoadFilter = "填报人 = '" & _UserName & "'" '3级用户指"员工"加载登录者相关行
End If
DataTables("数据录入表2023").Load()


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


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

在什么地方给_UserName赋值的?

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


加好友 发短信
等级:四尾狐 帖子:860 积分:5964 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/6/25 16:30:00 [只看该作者]

外部数据库,“用户管理”表中赋值

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


加好友 发短信
等级:四尾狐 帖子:860 积分:5964 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/6/25 16:44:00 [只看该作者]

明白了,谢谢老师

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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2023/6/26 9:30:00 [只看该作者]

应该在登录窗口登录成功时赋值,后面才能直接使用。

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


加好友 发短信
等级:四尾狐 帖子:860 积分:5964 威望:0 精华:0 注册:2016/4/15 22:24:00
代码  发帖心情 Post By:2023/6/28 11:21:00 [只看该作者]

Dim b As New CrossTableBuilder("统计表2", DataTables("村庄评比"))

b.HGroups.AddDef("乡镇街道") '添加客户列用于水平分组

b.HGroups.AddDef("行政村名") '添加客户列用于水平分组

b.VGroups.AddDef("评比年度") '添加列用于垂直分组

b.VGroups.AddDef("评比时间") '添加列用于垂直分组

''b.Totals.AddDef("得分") '添加列用于统计

b.Totals.AddDef("评比结果", GetType(String), 16)

Row("评比结果") = DataRow("评比结果")

b.Build '生成统计表

Maintable = Tables("统计表2") '打开生成的统计表

老师,请帮忙看看红色代码怎么修改?


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


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

这代码想实现什么功能?

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


加好友 发短信
等级:四尾狐 帖子:860 积分:5964 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/6/28 12:09:00 [只看该作者]

就是把评比结果放在评比时间下面,比如202306评比结果“合格”;202307“优秀”。

 回到顶部
总数 67 1 2 3 4 5 6 7 下一页