以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问远程升级代码的位置  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=62843)

--  作者:瞩望星空
--  发布时间:2015/1/8 19:55:00
--  请问远程升级代码的位置
我发现把项目启动时的升级检查代码放在“AfterOpenProject”或“LoadUserSetting”下面,在升级前,都会出现加载数据表的过程
那么,能否把检查升级代码放在“BeforeConnectOuterDataSource”中?没有升级再去连接数据库?

升级检查代码:
If 
Syscmd.Project.Update(False,False) = False Then \'如果没有
     ‘需要执行的命令

End
 If




--  作者:有点甜
--  发布时间:2015/1/8 19:57:00
--  

 不行,除非审计你自己做。

 

 又或者开始不加载任何表,全部放在afteropenproject那里加载出表来。


--  作者:瞩望星空
--  发布时间:2015/1/8 20:11:00
--  
嗯,刚才试了一下,是不行。
这样不加载任意表是不是按帮助“示例一”去设置?

示例一

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

Select Case e.DataTableName
    Case "表A","表B" \'表A和表B无条件加载
    Case "表C"
        If e.User.Type <> UserTypeEnum.Developer Then \'只有开发者才加载表C
            e.Cancel = True
        End If
    Case Else \'其他所有表默认都不加载
        e.Cancel =
True

End
Select

这样在打开项目的时候,表A和表B始终都会加载,表C只有在开发者打开项目的时候才会加载,而其它表都不会加载。



--  作者:有点甜
--  发布时间:2015/1/8 20:12:00
--  
 直接写 e.Cancel = True
--  作者:瞩望星空
--  发布时间:2015/1/8 20:25:00
--  
哦,好,谢谢版主
--  作者:瞩望星空
--  发布时间:2015/1/9 0:04:00
--  
晚上,试了一下,在我的项目中,发生矛盾了。
这个项目要在用户登录后,检查是否有“到期”数据要处理,所以,以前在用户登录LoadUserSetting事件中,设置了检查几个表是否有“到期”的代码。
现在设置了初始不加载表,在“AfterOpenProject”中才加载表。这样,在“LoadUserSetting”设置检查表数据的代码就出错。
而把这些检查代码放在别的地方,在切换用户后,又不能自动运行。


--  作者:Bin
--  发布时间:2015/1/9 8:09:00
--  
所以,你在AfterOpenProject中也要检查一次. 代码带过去.


LoadUserSetting  你判断一下表是否加载了.加载了再检测,没加载就不执行那些代码了. 一个IF条件的事.

这样第一次打开项目的时候,不会执行LoadUserSetting    而是执行AfterOpenProject

你切换用户的时候 就会执行LoadUserSetting    

--  作者:瞩望星空
--  发布时间:2015/1/9 8:24:00
--  
嗯,我理一下思路,再修改一下。 谢谢甜总。
--  作者:瞩望星空
--  发布时间:2015/1/9 13:02:00
--  
甜总,现在升级后,显示加载表的问题是解决了,但是,每次升级完后,都显示一个出错信息,能不能看看是怎么回事?

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.11.11.1
错误所在事件:
详细错误信息:
Cannot access a disposed object.
Object name: \'gw\'.

这个“gw”不是我写的,应该是FT系统自带的。
是不是升级语句中,应该加入退出系统的命令?
改成这样?

If Syscmd.Project.Update(False,False) = False Then \'如果没有
     ‘需要执行的命令
else
      
Syscmd.Project.Exit(False)
End If


--  作者:有点甜
--  发布时间:2015/1/9 14:13:00
--  

退出项目写

 

 System.Diagnostics.Process.GetProcessesByName("foxtable")(0).Kill