Foxtable(狐表)用户栏目专家坐堂 → 不同用户加载不同的表报错


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

主题:不同用户加载不同的表报错

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
不同用户加载不同的表报错  发帖心情 Post By:2019/8/20 9:20:00 [只看该作者]

如题,按帮助文件设置不同用户加载不同的表,
Select Case e.DataTableName
    Case "表A" 
        e.Cancel = (e.User.Name = "张三")
    Case "表B" 
        e.Cancel = (e.User.Name = "李四") 
    Case "表C" 
        e.Cancel = (e.User.Name = "王五")
End Select
报错
图片点击可在新窗口打开查看此主题相关图片如下:1566263877(1).png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/8/20 9:20:48编辑过]

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/20 9:33:00 [只看该作者]

代码在什么事件里?每一段代码都有其使用场合,帮助一般会说明在什么事件里使用的

重启一下项目再试

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2019/8/20 10:02:00 [只看该作者]

3、为不同用户加载不同的表

BeforeLoadInnerTable和BeforeLoadOuterTable事件都有一个Cancel属性,将此属性设置为True,将不加载对应的表。

例如在BeforeLoadInnerTable(内部表)或BeforeLoadOuterTable(外部表)中设置代码:

Select Case e.DataTableName
    Case "表A" 
        e.Cancel = (e.User.Name = "张三")
    Case "表B" 
        e.Cancel = (e.User.Name = "李四") 
    Case "表C" 
        e.Cancel = (e.User.Name = "王五")
End Select

这样张三打开项目,将不会加载表A,需要注意的是,如果打开项目后,有代码引用表A,将会出错,因为此时表A是不存在的。
同样李四打开项目不会加载表B,王五打开项目不会加载表C。

在BeforeLoadOuterTable里

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/20 10:26:00 [只看该作者]

关闭项目,重新启动

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2019/8/20 16:01:00 [只看该作者]

重启后好用了,但是一用其他用户登录就各种报错,因为在项目的CurrentTableChanged中用了Tables().ListMode = True
有没有什么好办法可以不加载与该用户不相关的表不报错?


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


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By:2019/8/20 16:03:00 [只看该作者]

if  tables.Contains("xxx") then
    Tables("xxx").ListMode = True
end if

 回到顶部