以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  自动升级后报错,请指导  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=59463)

--  作者:audience68
--  发布时间:2014/11/4 19:31:00
--  自动升级后报错,请指导
做好了自动升级,但是在自动升级后,出现报错窗口,但是关闭报错窗口后,启动程序正常,也确实进行了升级,请高手指导如何修改代码。我编写的AfterOpenProject代码如下:

StatusBar.Message2= "当前用户:" & User.Name &"              程序开发:***    QQ:1234567 "

If GetConfigValue("试用起始日",#1/1/2010#) = #1/1/2010# Then

    \'定义一个试用起始日的变量,让默认日期为早期时间, 若是第一次运行,则将试用日期设为当天

    SaveConfigValue("试用起始日",Date.Today)

End If

Dim usetoday As Date = GetConfigValue("试用日期",Date.today)  \'定义一个日期变量,来记录系统本次打开日期

Dim Regok As Boolean = getconfigvalue("注册状态",False)   \'定义一个逻辑变量,用来记录注册成功与否

Dim startday As Date = GetConfigValue("试用起始日",#1/1/2010#) \'定义一个日期变量,来记录第一次打开系统的日期

If regok = False Then    \'若是未注册状态

    If Date.Today < usetoday Then  \'若当前日期小于上一次的试用日期,则说明系统时间被修改

        msgbox("系统时间被非法修改,不能进入系统!"\'给消息提示

        syscmd.project.Exit()   \'强制退出系统

        Return

    End If

    If Date.Today > startday.AddDays(90) Then   \'若今天比第一次打开系统的日期过去3天了

        Forms("注册").open

        Return         \'返回,不执行后面的打开窗口1的代码

    End If

End If

SaveConfigValue("试用日期",Date.Today)   \'把今天的日期写入到试用日期的参数值里

If Syscmd.Project.Update(False,True) = False Then \'如果没有升级

    Forms("导航").open()

End If

If User.Type <> UserTypeEnum.Developer \'隐藏表标题(普通登录者不显示表标题,但开发者登录时显示)

    TableCaptionVisible = False

End If

 

DataTables("监造基本信息表").DataCols("监造流水号").RaiseDataColChanged()

DataTables("监造物资明细表").DataCols("监造流水号").RaiseDataColChanged()

 

Tables("监造放行单表.监造物资明细表").Visible = False

Tables("监造日志.监造物资明细表.监造周报").Visible = False

Tables("监造日志.监造物资明细表.图纸工艺文件及进度状态表").Visible = False

Tables("监造日志.监造物资明细表.原材料及外购外协件检验表").Visible = False

Tables("监造物资明细表").Grid.AllowFiltering = True \'启动表的内置筛选功能

Tables("监造基本信息表").Grid.AllowFiltering = True \'启动表的内置筛选功能

Tables("监造周报").Grid.AllowFiltering = True \'启动表的内置筛选功能

Tables("监造日志").Grid.AllowFiltering = True \'启动表的内置筛选功能

Tables("监造放行单表").Grid.AllowFiltering = True \'启动表的内置筛选功能

Tables("人员信息表").Grid.AllowFiltering = True \'启动表的内置筛选功能


错误信息如下:

.NET Framework 版本:2.0.50727.5485

Foxtable 版本:2014.10.16.1

错误所在事件:项目,AfterOpenProject

详细错误信息:

未将对象引用设置到对象的实例。


--  作者:有点甜
--  发布时间:2014/11/4 19:38:00
--  

 把这段代码写到Initialize事件,不写到afterOpenProject里面去

 

StatusBar.Message2= "当前用户:" & User.Name &"              程序开发:***    QQ:1234567 "

If GetConfigValue("试用起始日",#1/1/2010#) = #1/1/2010# Then

    \'定义一个试用起始日的变量,让默认日期为早期时间, 若是第一次运行,则将试用日期设为当天

    SaveConfigValue("试用起始日",Date.Today)

End If

Dim usetoday As Date = GetConfigValue("试用日期",Date.today)  \'定义一个日期变量,来记录系统本次打开日期

Dim Regok As Boolean = getconfigvalue("注册状态",False)   \'定义一个逻辑变量,用来记录注册成功与否

Dim startday As Date = GetConfigValue("试用起始日",#1/1/2010#) \'定义一个日期变量,来记录第一次打开系统的日期

If regok = False Then    \'若是未注册状态

    If Date.Today < usetoday Then  \'若当前日期小于上一次的试用日期,则说明系统时间被修改

        msgbox("系统时间被非法修改,不能进入系统!")  \'给消息提示

        syscmd.project.Exit()   \'强制退出系统

        Return

    End If

    If Date.Today > startday.AddDays(90) Then   \'若今天比第一次打开系统的日期过去3天了

        Forms("注册").open

        Return         \'返回,不执行后面的打开窗口1的代码

    End If

End If

SaveConfigValue("试用日期",Date.Today)   \'把今天的日期写入到试用日期的参数值里

If Syscmd.Project.Update(False,True) = False Then \'如果没有升级

    Forms("导航").open()

End If


--  作者:audience68
--  发布时间:2014/11/4 19:47:00
--  
甜版,在帮助里,这些代码不都是写在afterOpenProject里吗,为何,现在要该在Initialize,有什么说法吗?
--  作者:有点甜
--  发布时间:2014/11/4 19:49:00
--  

  如果写在afterOpenProject。

 

下面的代码就要在判断的里面写

 

 

If Syscmd.Project.Update(False,True) = False Then \'如果没有升级

    Forms("导航").open()

 

    \'其余的代码

 

End If


--  作者:audience68
--  发布时间:2014/11/4 19:55:00
--  
是不是可以这样理解,如果象我前面编的代码,在升级完后,就不打开导航窗口,但程序还是会继续执行END IF 后面的语句,所以就报错了?
--  作者:有点甜
--  发布时间:2014/11/4 20:05:00
--  


--  作者:audience68
--  发布时间:2014/11/5 13:53:00
--  
谢谢甜版