Foxtable(狐表)用户栏目专家坐堂 → 按照视频里的做,达不到效果


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

主题:按照视频里的做,达不到效果

美女呀,离线,留言给我吧!
mxy8898
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:51 积分:448 威望:0 精华:0 注册:2018/2/3 11:13:00
按照视频里的做,达不到效果  发帖心情 Post By: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 '将窗口以表名字写入授权表控制


图片点击可在新窗口打开查看此主题相关图片如下:tim截图20180327115138.png
图片点击可在新窗口打开查看



不用管理员登陆,提示错误后,无法进入系统


图片点击可在新窗口打开查看此主题相关图片如下:tim截图20180327092235.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/3/27 11:54:09编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/27 12:06:00 [只看该作者]

你逻辑有问题。

 

你授权表,应该有这些列,如 表名、列名、窗口名、控件名、菜单名、功能区、功能组 ......

 

表的权限、窗口的权限、菜单的权限,分开处理的才对。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/27 12:07:00 [只看该作者]

你提示的错误,应该是你LoadUserSetting事件代码有问题吧?贴出代码看看。

 回到顶部
美女呀,离线,留言给我吧!
mxy8898
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:51 积分:448 威望:0 精华:0 注册:2018/2/3 11:13:00
  发帖心情 Post By: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 '将窗口以表名字写入授权表控制

授权被的列是:分组,表名,列名,不可见,不可编辑

下图是视频截图

图片点击可在新窗口打开查看此主题相关图片如下:tim截图20180327125051.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/3/27 12:51:49编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/27 14:59:00 [只看该作者]

加入一个【类型】列,标记好此行,是窗口权限、还是表格权限、还是菜单权限

 

For Each dr As DataRow In DataTables("授权表").Select("分组 = '" & User.Group & "' and 类型='表格'" )


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:51 积分:448 威望:0 精华:0 注册:2018/2/3 11:13:00
  发帖心情 Post By:2018/3/27 17:27:00 [只看该作者]

两种方法都不行,提示找不到****表后,确定系统退出不能进入


好杯具

现在好像权限都失效了。




用户数据绑定到 ACC数据库里,和其他表一个数据,总是提示 格式错误,名称这个键已经是主键了
[此贴子已经被作者于2018/3/27 20:53:26编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/27 17:31:00 [只看该作者]

上传你的mdb数据库,不然无法打开项目测试。

 

http://www.foxtable.com/webhelp/scr/1057.htm

 

注意红色代码

 

Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("分组 = '" & User.Group & "'" )
        If Tables.Contains(dr("表名")) Then
            If dr.IsNull("列名") Then
                Tables(dr("表名")).Visible = Not dr("不可见")
                Tables(dr("表名")).AllowEdit = Not dr("不可编辑")
                RibbonTabs("编辑").Visible = False
            Else
                Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
                Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
                RibbonTabs("编辑").Visible = True
            End If
        End If
    Next
End If  '以上为细化权限管理


 回到顶部
美女呀,离线,留言给我吧!
mxy8898
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:51 积分:448 威望:0 精华:0 注册:2018/2/3 11:13:00
  发帖心情 Post By:2018/3/27 17:58:00 [只看该作者]

授权表格式我重新调整了下
1、权限失效,
   限制每个表功能使用
   限制窗口打开
   限制菜单打开3类
2、第一个表 水质检测原始数据,修改第一列,和最后一列,自动记录修改人,如果用开发模式进去,记录没错,如果正常双击进去,记录人是1
[此贴子已经被作者于2018/3/27 20:52:59编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/27 18:44:00 [只看该作者]

1、注意红色代码

 


For Each dr As DataRow In DataTables("授权表").Select("分组 = '" & _usergroup & "' ")
    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

 

2、你不能使用 user.name、user.group, 改成这样_username、_usergroup


 回到顶部
总数 14 1 2 下一页