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


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

主题:关于权限控制代码

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


加好友 发短信
等级:三尾狐 帖子:648 积分:4728 威望: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



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


加好友 发短信
等级:三尾狐 帖子:648 积分:4728 威望: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()


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


加好友 发短信
等级:三尾狐 帖子:648 积分:4728 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/6/25 16:30:00 [显示全部帖子]

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

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


加好友 发短信
等级:三尾狐 帖子:648 积分:4728 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/6/25 16:44:00 [显示全部帖子]

明白了,谢谢老师

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


加好友 发短信
等级:三尾狐 帖子:648 积分:4728 威望: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") '打开生成的统计表

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


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


加好友 发短信
等级:三尾狐 帖子:648 积分:4728 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/6/28 12:09:00 [显示全部帖子]

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

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


加好友 发短信
等级:三尾狐 帖子:648 积分:4728 威望:0 精华:0 注册:2016/4/15 22:24:00
代码问题  发帖心情 Post By:2023/6/28 13:57:00 [显示全部帖子]

请老师修改一
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目230628.foxdb

下两段代码,谢谢

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


加好友 发短信
等级:三尾狐 帖子:648 积分:4728 威望:0 精华:0 注册:2016/4/15 22:24:00
代码问题  发帖心情 Post By:2023/6/28 14:59:00 [显示全部帖子]

非常感谢老师指导。麻烦蓝老师再帮我看看效果2的代码,谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目230627.foxdb


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


加好友 发短信
等级:三尾狐 帖子:648 积分:4728 威望:0 精华:0 注册:2016/4/15 22:24:00
代码问题  发帖心情 Post By:2023/6/28 15:25:00 [显示全部帖子]

Dim dtb As New DataTableBuilder("统计1")
dtb.AddDef("乡镇", GetType(String), 16)
dtb.AddDef("村名", GetType(String), 16)
Dim prds As List(Of String()) = DataTables("表A").GetValues("检查年度|检查结果")
For Each prd As String() In prds
    dtb.AddDef(prd(0) & "_" & prd(1), GetType(String), 16)
Next
dtb.Build()

For Each cus As String() In DataTables("表A").GetValues("乡镇|村名")
    Dim dr As DataRow = DataTables("统计1").AddNew()
    dr("乡镇") = cus(0)
    dr("村名") = cus(1)
    For Each prd As String() In prds
        dr(prd(0) & "_" & prd(1)) = DataTables("表A").Compute("max(检查时间)", "乡镇 = '" & cus(0) & "' And [村名] = '" & cus(1) & "' and 检查年度='" & prd(0) & "' and 检查结果='" & prd(1) & "'") 
    Next
Next
MainTable = Tables("统计1")

蓝老师,我照做了,单元格(202301,202302,202304)这样的代码就不会了,麻烦蓝老师帮忙

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


加好友 发短信
等级:三尾狐 帖子:648 积分:4728 威望:0 精华:0 注册:2016/4/15 22:24:00
代码问题  发帖心情 Post By:2023/6/28 16:28:00 [显示全部帖子]

Dim dtb As New DataTableBuilder("统计表4")
dtb.AddDef("乡镇", GetType(String), 16)
Dim prds As List(Of String()) = DataTables("表A").GetValues("检查年度|检查时间|检查结果")
For Each prd As String() In prds 
    'dtb.AddDef(prd(0) & "_" & prd(2), GetType(String), 16)
     dtb.AddDef(prd(0) & "_" & prd(1) & "_" & prd(2), GetType(String), 16)
Next
dtb.Build()

 For Each cus As String() In DataTables("表A").GetValues("乡镇") 
    Dim dr As DataRow = DataTables("统计表4").AddNew()
    dr("乡镇") = cus(0) 
    For Each prd As String() In prds 
        'dr(prd(0) & "_" & prd(2)) = DataTables("表A").GetComboListString("村名", "乡镇 = '" & cus(0) & "' and 检查年度='" & prd(0) & "' and 检查时间='" & prd(1) & "'and 检查结果='" & prd(2) & "'")
        dr(prd(0) & "_" & prd(1) & "_" & prd(2)) = DataTables("表A").GetComboListString("村名", "乡镇 = '" & cus(0) & "' and 检查年度='" & prd(0) & "' and 检查时间='" & prd(1) & "'and 检查结果='" & prd(2) & "'")
    Next
Next
MainTable = Tables("统计表4")'打开生成的统计表

蓝老师,帮忙再看看上面代码哪里出错误了?

 回到顶部
总数 37 1 2 3 4 下一页