以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助:非开发者或非管理员登录问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174861) |
-- 作者:xnsiwei -- 发布时间:2022/2/9 20:19:00 -- 求助:非开发者或非管理员登录问题 1、开发者或管理员身份登录没有问题 2、其它身份登录出现如图错误(不同用户错误提示表不同) 3、但对应的项目事件代码里面不涉及相关表,只是可视化授权相关代码 4、此前一直没有问题,可视化授权代码一直都在 求解? 此主题相关图片如下:3.png 此主题相关图片如下:2.png [此贴子已经被作者于2022/2/9 20:23:48编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/2/10 8:24:00 -- 贴出出错事件代码。应该是权限表配置有问题,没有加载或者卸载隐藏了需要使用的表 |
-- 作者:xnsiwei -- 发布时间: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 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2022/2/10 10:07:00 -- 首先升级代码的用法不正确:http://www.foxtable.com/webhelp/topics/2934.htm 如果我们在AfterOpenProject下面的代码: Syscmd.Project.Update(False,False) 目的是希望打开项目的时候自动升级,然后打开窗口1。 If Syscmd.Project.Update(False,False) = False Then \'如果没有升级 也就是说Update执行后会返回一个逻辑值,如果升级成功,返回True,否则返回False。 总之,如果需要在AfterOpenPoject事件中实现自动升级,那么原有的AfterOpenProject事件代码必须包括在这个判断中,只有没有升级的情况下,才执行原来的代码: If Syscmd.Project.Update(False,False) = False Then \'如果没有升级 改正升级代码后如果还有问题,检查一下权限表的设置,确定存在“hp1”的表格,并且已经加载
|
-- 作者:xnsiwei -- 发布时间:2022/2/10 13:01:00 -- 已改,问题依旧 以前一直都没问题的
|
-- 作者:有点蓝 -- 发布时间:2022/2/10 13:35:00 -- 检查一下权限表的设置,确定存在“hp1”的表格,并且已经加载 |
-- 作者:xnsiwei -- 发布时间:2022/2/10 15:17:00 -- 有的,不止这些表,但因为表很多,都设置为动态加载 先前这样也不会有问题
|
-- 作者:有点蓝 -- 发布时间:2022/2/10 15:48:00 -- 怎么设置的‘动态加载’?表格都没有加载,权限表里用到并设置肯定是出错的。之前没有问题,可能是之前权限表没有针对这些表的设置 |
-- 作者:xnsiwei -- 发布时间: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 |