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


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

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

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/10 8:24:00 [显示全部帖子]

贴出出错事件代码。应该是权限表配置有问题,没有加载或者卸载隐藏了需要使用的表

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/10 10:07:00 [显示全部帖子]

首先升级代码的用法不正确:http://www.foxtable.com/webhelp/topics/2934.htm

如果我们在AfterOpenProject下面的代码:

Syscmd.Project.Update(False,False)
Forms("窗口1").Open() '可能会出错
'后续其它代码

目的是希望打开项目的时候自动升级,然后打开窗口1。
但是上述代码肯定会在升级成功之后提示错误,因为一旦升级成功,Foxtable就会关闭,后面的打开窗口代码就会出错,当然后续其它的代码也一样会出错。
我们可以用下面的代码避免错误:

If Syscmd.Project.Update(False,False) = False Then '如果没有升级
    
Forms("窗口1").open()
    '后续其它代码
End
 If

也就是说Update执行后会返回一个逻辑值,如果升级成功,返回True,否则返回False。

总之,如果需要在AfterOpenPoject事件中实现自动升级,那么原有的AfterOpenProject事件代码必须包括在这个判断中,只有没有升级的情况下,才执行原来的代码:

If Syscmd.Project.Update(False,False) = False Then '如果没有升级
    '原AfterOpenProject事件代码
End
 If


改正升级代码后如果还有问题,检查一下权限表的设置,确定存在“hp1”的表格,并且已经加载

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/10 13:35:00 [显示全部帖子]

检查一下权限表的设置,确定存在“hp1”的表格,并且已经加载

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/10 15:48:00 [显示全部帖子]

怎么设置的‘动态加载’?表格都没有加载,权限表里用到并设置肯定是出错的。之前没有问题,可能是之前权限表没有针对这些表的设置

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/11 8:30:00 [显示全部帖子]

很简单的道理,没有加载的表格,权限代码里用到肯定会出错啊!判断表格是否有加载

    For Each dr As DataRow In DataTables("yh1").Select("用户名 = '" & User.Name & "'" )
if  Tables.contains(dr("授权项目")) then
        If dr.IsNull("列名") Then
            Tables(dr("授权项目")).Visible = Not dr("不可见")
……

AfterOpenProject代码

Syscmd.Project.Update(False,False) '这一句去掉,多余
If Syscmd.Project.Update(False,False) = False Then '如果没有升级
其它所有代码都放进if判断里
If User.Type <> UserTypeEnum.Developer '隐藏表名,仅开发者可见.
    TableCaptionVisible = False
End If
    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

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/11 10:17:00 [显示全部帖子]

不加载的表格相当于在项目里是不存在的,无法使用,还要怎么说才明白!

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/11 10:21:00 [显示全部帖子]

如果使用按钮加载的,应该在按钮加载代码之后再去控制这些加载的表格的权限

 回到顶部