Foxtable(狐表)用户栏目专家坐堂 → 请查一下这个系统命令Syscmd.Project.Open是不是有bug?


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

主题:请查一下这个系统命令Syscmd.Project.Open是不是有bug?

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


加好友 发短信
等级:幼狐 帖子:123 积分:1037 威望:0 精华:0 注册:2018/8/22 8:53:00
请查一下这个系统命令Syscmd.Project.Open是不是有bug?  发帖心情 Post By:2020/5/10 20:26:00 [只看该作者]

经过各种排除法后,终于锁定这个系统命令Syscmd.Project.Open(ProjectFile,tbu.Value),只要通过它重新打开项目,就出现如下问题:

图片点击可在新窗口打开查看此主题相关图片如下:2020-05-10进入失误.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2020-05-10进入失误2.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:幼狐 帖子:123 积分:1037 威望:0 精华:0 注册:2018/8/22 8:53:00
  发帖心情 Post By:2020/5/10 20:27:00 [只看该作者]

这个系统命令在2019.11.3之前的版本,都没有问题,换新版本后,就一直出现这样的问题。这个系统命令不用还不行,实在没招了,看看是不是里面有bug?

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

方法1、在上面圈住的代码前面加一句:e.cancel=true
2、把打开项目的代码放到afteropenproject事件,参数通过全局变量传递,如:
forms("登录窗口").open
if vars("某变量") > ""
Syscmd.Project.Open(projectfile, vars("某变量"))
return
else
......
end if

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


加好友 发短信
等级:幼狐 帖子:123 积分:1037 威望:0 精华:0 注册:2018/8/22 8:53:00
  发帖心情 Post By:2020/5/11 12:23:00 [只看该作者]

这样还是不行,造成循环,一直在打开那个登录窗口。

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


加好友 发短信
等级:幼狐 帖子:123 积分:1037 威望:0 精华:0 注册:2018/8/22 8:53:00
  发帖心情 Post By:2020/5/11 12:26:00 [只看该作者]

因为在afteropenproject事件之前,用到的如下事件

BeforeOpenProject
BeforeConnectOuterDataSource
BeforeLoadOuterTable

都需要这个变量来传递,判断是否要加载。


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/11 13:36:00 [只看该作者]

这个全局变量只是在Syscmd.Project.Open里使用,和上面3个事件没有任何关系,3个事件应该使用的是openFileargs

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


加好友 发短信
等级:幼狐 帖子:123 积分:1037 威望:0 精华:0 注册:2018/8/22 8:53:00
  发帖心情 Post By:2020/5/11 14:02:00 [只看该作者]

好的。那么对这个全局变量的赋值,应该放在登录窗口中,还是在AfteropenProject事件中?

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/11 14:08:00 [只看该作者]

放在登录窗口中,替代Syscmd.Project.Open,比如:vars("某变量") = tbu.value

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


加好友 发短信
等级:幼狐 帖子:123 积分:1037 威望:0 精华:0 注册:2018/8/22 8:53:00
  发帖心情 Post By:2020/5/11 14:24:00 [只看该作者]

通过在Afteropenproject事件中执行:
If OpenFileArgs.Count = 0 Then
    '第一次连接的时候,打开登录窗口
    Forms("UserLogin").Show
    Syscmd.Project.Open(projectfile,Vars("_username"))
    Return
Else    
    user.Name= openfileargs(0) '(0)是第一个参数
End If

终于可以了!
但不知道为什么?

 回到顶部