以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口[首页]指定的所有者表不存在,无法打开此窗口!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=130247)

--  作者:qaz17909
--  发布时间:2019/1/16 21:04:00
--  窗口[首页]指定的所有者表不存在,无法打开此窗口!

每次升级后第一次打开都提示:窗口[首页]指定的所有者表不存在,无法打开此窗口!之后的登录都不会出现这个错误提示,这是为什么,[首页]窗口是主窗口,在afteropen project中设置打开,所有者表已经是加载了的,实在找不到原因。


--  作者:有点甜
--  发布时间:2019/1/16 21:07:00
--  

贴出升级代码。

 

如果我们在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


--  作者:qaz17909
--  发布时间:2019/1/16 21:22:00
--  

afteropen project 的代码如下:想实现升级后自动打开项目

If Syscmd.Project.Update(False,False) = False Then \'如果没有升级
    \'导航
    Forms("导航").Show
    Forms("logo").Show
    MainTable = Tables("首页")
    Forms("首页").Open()
   
    \'标题
    BaseMainForm.Text = "管理系统" 
   
Else
    If Syscmd.Project.Update(False,True) Then
        Application.ReStart
    End If
End If

[此贴子已经被作者于2019/1/16 21:22:19编辑过]

--  作者:有点甜
--  发布时间:2019/1/16 21:37:00
--  

改成

 

If Syscmd.Project.Update(False,True) = false Then
    \'导航
    Forms("导航").Show
    Forms("logo").Show
    MainTable = Tables("首页")
    Forms("首页").Open()
   
    \'标题
    BaseMainForm.Text = "管理系统" 
   
Else
    Application.ReStart

    return
End If


--  作者:Aa江生
--  发布时间:2019/12/3 15:12:00
--  
我也是这样 我不知道如何处理
--  作者:Aa江生
--  发布时间:2019/12/3 15:13:00
--  在哪里改啊
在那里改啊?
--  作者:有点蓝
--  发布时间:2019/12/3 15:28:00
--  
afteropenproject事件。先确定主窗口绑定的表是否已经加载。如果不懂就把项目文件发上来