Foxtable(狐表)用户栏目专家坐堂 → 求助:非开发者或非管理员登录问题


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

主题:求助:非开发者或非管理员登录问题

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


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
求助:非开发者或非管理员登录问题  发帖心情 Post By:2022/2/9 20:19:00 [显示全部帖子]

1、开发者或管理员身份登录没有问题
2、其它身份登录出现如图错误(不同用户错误提示表不同)
3、但对应的项目事件代码里面不涉及相关表,只是可视化授权相关代码
4、此前一直没有问题,可视化授权代码一直都在
求解?


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

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

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

[此贴子已经被作者于2022/2/9 20:23:48编辑过]

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


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/10 9:56:00 [显示全部帖子]

1、项目AfterOpenProject事件代码


If User.Type <> UserTypeEnum.Developer '隐藏表名,仅开发者可见.

    TableCaptionVisible = False
End If
Syscmd.Project.Update(False,False) '静默升级
forms("主界面").open '打开窗口
forms("背景窗口").open '打开背景窗口
MainTable = Tables("A") '打开背景主表
HttpServer.Start() '开启http服务器
If user.Type = userTypeEnum.user Then '非开发者或管理员不可见下列表
    Tables("yh1").Visible = False
End If
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("yh1").Visible = (User.Type <> UserTypeEnum.User )'非开发者或管理员不可见此表
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("yh1").Select("用户名 = '" & User.Name & "'" )
        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


[此贴子已经被作者于2022/2/10 9:56:21编辑过]

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


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/10 9:56:00 [显示全部帖子]

2、项目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("yh1").Visible = (User.Type <> UserTypeEnum.User )'非开发者或管理员不可见此表
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("yh1").Select("用户名 = '" & User.Name & "'" )
        If dr.IsNull("列名") Then
            Tables(dr("授权项目")).Visible = Not dr("不可见")
            Tables(dr("授权项目")).AllowEdit = Not dr("不可编辑")
            DataTables(dr("授权项目")).AllowClipBoard = Not dr("不可复制")
        Else
            Tables(dr("授权项目")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables(dr("授权项目")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
            DataTables(dr("授权项目")).AllowClipBoard = Not dr("不可复制")
        End If
    Next
End If


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


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/10 13:01:00 [显示全部帖子]

已改,问题依旧

以前一直都没问题的

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


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/10 15:17:00 [显示全部帖子]

有的,不止这些表,但因为表很多,都设置为动态加载
先前这样也不会有问题

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


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/11 6:52:00 [显示全部帖子]

1、项目BeforeLoadOuterTable事件代码,默认不加载其它表,用界面按钮加载

Select Case e.DataTableName
    Case "A","yh1","mls" ,"用户" '无条件加载这些表
    Case "sjklb"
        If e.User.Type <> UserTypeEnum.Developer Then '只有开发者才加载表sjklb
            e.Cancel = True
        End If
    Case Else '其他所有表默认都不加载
        e.Cancel = True
End Select
2、根据版主意见改良后的AfterOpenProject代码
If User.Type <> UserTypeEnum.Developer '隐藏表名,仅开发者可见.
    TableCaptionVisible = False
End If
Syscmd.Project.Update(False,False) '静默升级
If Syscmd.Project.Update(False,False) = False Then '如果没有升级
    forms("主界面").open '打开窗口
    forms("背景窗口").open '打开背景窗口
    MainTable = Tables("A") '打开背景主表 '原AfterOpenProject事件代码
    HttpServer.Start() '开启http服务器
    If user.Type = userTypeEnum.user Then '非开发者或管理员不可见下列表
        Tables("yh1").Visible = False
    End If
End If

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


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/11 6:54:00 [显示全部帖子]

1、项目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("yh1").Visible = (User.Type <> UserTypeEnum.User )'非开发者或管理员不可见此表
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("yh1").Select("用户名 = '" & User.Name & "'" )
        If dr.IsNull("列名") Then
            Tables(dr("授权项目")).Visible = Not dr("不可见")
            Tables(dr("授权项目")).AllowEdit = Not dr("不可编辑")
            DataTables(dr("授权项目")).AllowClipBoard = Not dr("不可复制")
        Else
            Tables(dr("授权项目")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables(dr("授权项目")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
            DataTables(dr("授权项目")).AllowClipBoard = Not dr("不可复制")
        End If
    Next
End If




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


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/11 10:05:00 [显示全部帖子]

这是授权表

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

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

[此贴子已经被作者于2022/2/11 10:05:47编辑过]

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


加好友 发短信
等级:一尾狐 帖子:454 积分:3241 威望:0 精华:0 注册:2019/11/3 22:21:00
  发帖心情 Post By:2022/2/11 14:18:00 [显示全部帖子]

谢谢版主,加了条件判断后问题解决:if  Tables.contains(dr("授权项目")) then

 回到顶部