以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 按照视频里的做,达不到效果 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=116577) |
-- 作者:mxy8898 -- 发布时间:2018/3/27 11:54:00 -- 按照视频里的做,达不到效果 用户管理的窗口:afterload,写入以下代码,窗口绑定在 授权表下 Dim lst As WinForm.ListBox = e.Form.Controls("ListBox1") lst.ComboList = _UserTable.SQLGetComboListString("Name") If Lst.Items.Count > 0 Then lst.SelectedIndex = 0 End If \'用户管理 For Each ck As DataRow In DataTables("授权表").Select("分组 = \' " & user.Group & " \' And 表名 = \'" & e.Form.name & " \'") e.form.controls(ck("列名")).Visible = Not ck("不可见") e.form.controls(ck("列名")).Visible = Not ck("不可编辑") Next \'将窗口以表名字写入授权表控制 不用管理员登陆,提示错误后,无法进入系统
[此贴子已经被作者于2018/3/27 11:54:09编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/3/27 12:06:00 -- 你逻辑有问题。
你授权表,应该有这些列,如 表名、列名、窗口名、控件名、菜单名、功能区、功能组 ......
表的权限、窗口的权限、菜单的权限,分开处理的才对。 |
-- 作者:有点甜 -- 发布时间:2018/3/27 12:07:00 -- 你提示的错误,应该是你LoadUserSetting事件代码有问题吧?贴出代码看看。 |
-- 作者:mxy8898 -- 发布时间:2018/3/27 12:43:00 -- 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("不可编辑") End If Next End If \'权限设置 这个是项目属性里的,只是针对表,可以生效,看视频讲解,在窗口的加载后执行,老师演示效果挺好:窗口事件 afterload 在窗口事件里写的是: Dim lst As WinForm.ListBox = e.Form.Controls("ListBox1") lst.ComboList = _UserTable.SQLGetComboListString("Name") If Lst.Items.Count > 0 Then lst.SelectedIndex = 0 End If \'用户管理 For Each ck As DataRow In DataTables("授权表").Select("分组 = \' " & user.Group & " \' And 表名 = \'" & e.Form.name & " \'") e.form.controls(ck("列名")).Visible = Not ck("不可见") e.form.controls(ck("列名")).Visible = Not ck("不可编辑") Next \'将窗口以表名字写入授权表控制 授权被的列是:分组,表名,列名,不可见,不可编辑 下图是视频截图
[此贴子已经被作者于2018/3/27 12:51:49编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/3/27 14:59:00 -- 加入一个【类型】列,标记好此行,是窗口权限、还是表格权限、还是菜单权限
For Each dr As DataRow In DataTables("授权表").Select("分组 = \'" & User.Group & "\' and 类型=\'表格\'" ) |
-- 作者:有点甜 -- 发布时间:2018/3/27 15:00:00 -- 或者是修改代码
For Each dr As DataRow In DataTables("授权表").Select("分组 = \'" & User.Group & "\'" ) If Tables.Contains(dr("表名")) Then
End If Next |
-- 作者:mxy8898 -- 发布时间:2018/3/27 17:27:00 -- 两种方法都不行,提示找不到****表后,确定系统退出不能进入 好杯具 现在好像权限都失效了。 用户数据绑定到 ACC数据库里,和其他表一个数据,总是提示 格式错误,名称这个键已经是主键了
[此贴子已经被作者于2018/3/27 20:53:26编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/3/27 17:31:00 -- 上传你的mdb数据库,不然无法打开项目测试。
http://www.foxtable.com/webhelp/scr/1057.htm
注意红色代码
Tables("授权表").Visible = (User.Type <> UserTypeEnum.User ) |
-- 作者:mxy8898 -- 发布时间:2018/3/27 17:58:00 -- 授权表格式我重新调整了下 1、权限失效, 限制每个表功能使用 限制窗口打开 限制菜单打开3类 2、第一个表 水质检测原始数据,修改第一列,和最后一列,自动记录修改人,如果用开发模式进去,记录没错,如果正常双击进去,记录人是1
[此贴子已经被作者于2018/3/27 20:52:59编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/3/27 18:44:00 -- 1、注意红色代码
2、你不能使用 user.name、user.group, 改成这样_username、_usergroup |