Foxtable(狐表)用户栏目专家坐堂 → 请问远程升级代码的位置


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

主题:请问远程升级代码的位置

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
请问远程升级代码的位置  发帖心情 Post By:2015/1/8 19:55:00 [只看该作者]

我发现把项目启动时的升级检查代码放在“AfterOpenProject”或“LoadUserSetting”下面,在升级前,都会出现加载数据表的过程
那么,能否把检查升级代码放在“BeforeConnectOuterDataSource”中?没有升级再去连接数据库?

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

End
 If




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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/8 19:57:00 [只看该作者]

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

 

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


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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By: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只有在开发者打开项目的时候才会加载,而其它表都不会加载。



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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/8 20:12:00 [只看该作者]

 直接写 e.Cancel = True

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2015/1/8 20:25:00 [只看该作者]

哦,好,谢谢版主

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2015/1/9 0:04:00 [只看该作者]

晚上,试了一下,在我的项目中,发生矛盾了。
这个项目要在用户登录后,检查是否有“到期”数据要处理,所以,以前在用户登录LoadUserSetting事件中,设置了检查几个表是否有“到期”的代码。
现在设置了初始不加载表,在“AfterOpenProject”中才加载表。这样,在“LoadUserSetting”设置检查表数据的代码就出错。
而把这些检查代码放在别的地方,在切换用户后,又不能自动运行。


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/9 8:09:00 [只看该作者]

所以,你在AfterOpenProject中也要检查一次. 代码带过去.


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

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
瞩望星空
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2015/1/9 8:24:00 [只看该作者]

嗯,我理一下思路,再修改一下。 谢谢甜总。

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By: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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/9 14:13:00 [只看该作者]

退出项目写

 

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

 


 回到顶部
总数 18 1 2 下一页