以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请查一下这个系统命令Syscmd.Project.Open是不是有bug?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=149729)

--  作者:mojunming189
--  发布时间:2020/5/10 20:26:00
--  请查一下这个系统命令Syscmd.Project.Open是不是有bug?
经过各种排除法后,终于锁定这个系统命令Syscmd.Project.Open(ProjectFile,tbu.Value),只要通过它重新打开项目,就出现如下问题:

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

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


--  作者:mojunming189
--  发布时间:2020/5/10 20:27:00
--  
这个系统命令在2019.11.3之前的版本,都没有问题,换新版本后,就一直出现这样的问题。这个系统命令不用还不行,实在没招了,看看是不是里面有bug?
--  作者:有点蓝
--  发布时间: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
--  发布时间:2020/5/11 12:23:00
--  
这样还是不行,造成循环,一直在打开那个登录窗口。
--  作者:mojunming189
--  发布时间:2020/5/11 12:26:00
--  
因为在afteropenproject事件之前,用到的如下事件

BeforeOpenProject
BeforeConnectOuterDataSource
BeforeLoadOuterTable

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


--  作者:有点蓝
--  发布时间:2020/5/11 13:36:00
--  
这个全局变量只是在Syscmd.Project.Open里使用,和上面3个事件没有任何关系,3个事件应该使用的是openFileargs
--  作者:mojunming189
--  发布时间:2020/5/11 14:02:00
--  
好的。那么对这个全局变量的赋值,应该放在登录窗口中,还是在AfteropenProject事件中?
--  作者:有点蓝
--  发布时间:2020/5/11 14:08:00
--  
放在登录窗口中,替代Syscmd.Project.Open,比如:vars("某变量") = tbu.value
--  作者:mojunming189
--  发布时间: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

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