Foxtable(狐表)用户栏目专家坐堂 → 使用新版0926删除BIN文件夹重新打开项目会出错


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

主题:使用新版0926删除BIN文件夹重新打开项目会出错

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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17116 威望:0 精华:0 注册:2014/7/29 19:09:00
使用新版0926删除BIN文件夹重新打开项目会出错  发帖心情 Post By:2019/9/25 19:05:00 [显示全部帖子]

如题,安装版本后,如果把安装目录下的BIN目录删除过后重新打开就会出错,一直死循环在那里

图片点击可在新窗口打开查看此主题相关图片如下:新版错误.jpg
图片点击可在新窗口打开查看

卸载掉新版安装回0908版本就不会,会是什么原因?
谢谢!

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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17116 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2019/9/26 22:35:00 [显示全部帖子]

检查了一下就是在afteropenproject项目属性中新增一个临时表出错的,代码如下:

If DataTables.Contains("TabFid") = False Then
    Dim dtb As New DataTableBuilder("TabFid")
    dtb.AddDef("wn", Gettype(String),16) '窗口名
    dtb.AddDef("Mtb", Gettype(String),16) '主表名
    dtb.AddDef("Curtb", Gettype(String),20) '窗口中的当前活动表名,即Currenttable.Name
    dtb.AddDef("winlb", Gettype(String),8) '窗口类别
    dtb.AddDef("Fid", Gettype(Integer)) '流程号
    dtb.AddDef("Idcol", Gettype(String),10) '单据识别列
    dtb.AddDef("Rcol", Gettype(String),10) '关联列
    dtb.AddDef("LoadFs", Gettype(Integer)) '加载方式 0按默认加载,1为用户自定义加载,,2为通过加载树加载
    dtb.AddDef("Loadlb", Gettype(String),8) '流程节点任务数类别
    dtb.AddDef("CanAddnew", Gettype(Boolean)) '可新增
    dtb.AddDef("CanMD", Gettype(Boolean)) '可修改
    dtb.AddDef("CanCK", Gettype(Boolean)) '可查阅报表
    dtb.AddDef("CanOver", Gettype(Boolean)) '可结案
    dtb.AddDef("CanPrt", Gettype(Boolean)) '可打印
    dtb.AddDef("CanExp", Gettype(Boolean)) '可导出
    dtb.AddDef("CanImport", Gettype(Boolean)) '可导出
    dtb.AddDef("CanReset", Gettype(Boolean)) '可重置
    dtb.AddDef("ShowTree", Gettype(Boolean)) '显示加载筛选目录树
    dtb.AddDef("pg", Gettype(Integer)) '当前页
    dtb.AddDef("pgs", Gettype(Integer)) '总页数
    dtb.AddDef("RowsPage", Gettype(Integer)) '每页加载行数
    dtb.AddDef("RowsTotal", Gettype(Integer)) '总行数
    dtb.AddDef("trRows", Gettype(Integer)) '每页加载树行数
    dtb.AddDef("trPage", Gettype(Integer)) '当前加载树页数
    dtb.AddDef("ldRange", Gettype(String),16) '查阅范围
    dtb.AddDef("Isrange", Gettype(Boolean)) '是否设置了查阅范围
    dtb.AddDef("IsdynamicTr", Gettype(Boolean)) '目录树是否根据条件生成
    dtb.AddDef("sortCol", Gettype(String),32) '排序列
    dtb.AddDef("trcol", Gettype(String),32) '加载树列
    dtb.AddDef("trcolNull", Gettype(String),400) '加上null判断的目录树列
    dtb.AddDef("sqlcol", Gettype(String),200) '需要从sql数据库中提取的目录树列
    dtb.AddDef("ldTreeSort", Gettype(String),32) '加载目录树排序列
    dtb.AddDef("loadorder", Gettype(String),8) '是否降序加载
    dtb.AddDef("ldpagecol", Gettype(String),16) '加载分页依据列
    dtb.AddDef("Loadflt_User", Gettype(String),400) '附件列
    dtb.AddDef("ReferCols", Gettype(String),100) '引用关联表中的其他列(包括表名关联列)
    dtb.AddDef("OtherCols", Gettype(String),64) '引用关联表中的其他列
    dtb.Build()
End If
原来的版本都不会出错,为什么会这样,出错的详细信息如下

System.NullReferenceException: 未将对象引用设置到对象的实例。

   Foxtable.h6.O.O_00oOO.(Object A_0, SelectedIndexChangingEventArgs A_1)

   C1.Win.C1Command.SelectedIndexChangingEventHandler.Invoke(Object sender, SelectedIndexChangingEventArgs e)

   C1.Win.C1Command.C1DockingTab.OnSelectedIndexChanging(SelectedIndexChangingEventArgs e)

   C1.Win.C1Command.C1DockingTab.a(Int32 A_0, Boolean A_1, Boolean A_2, Boolean A_3, Boolean A_4)

   C1.Win.C1Command.C1DockingTab.a(Object A_0, TabPageEventArgs A_1)

   C1.Win.C1Command.C1DockingTabPages.OnPageAdded(Control apage)

   C1.Win.C1Command.PagedControlsCollectionBase.ControlsPageAdded(Control c, Boolean moving)

   C1.Win.C1Command.C1DockingTab.C1DockingTabControlCollection.Add(Control value)

   C1.Win.C1Command.PagedControlsCollectionBase.Add(Object value)

   Foxtable.h6.O.oO_.(String A_0, Boolean A_1, Boolean A_2)

   Foxtable.DataTableBuilder.Build(Boolean OnlyDataTable)

   UserCode.Ar3scHW6xvlRaEDjE()


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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17116 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2019/9/27 10:52:00 [显示全部帖子]

If DataTables.Contains("TabFid") = False Then
    Dim dtb As New DataTableBuilder("TabFid")
       dtb.AddDef("OtherCols", Gettype(String),64) '引用关联表中的其他列
...
msgbox(1)
    dtb.Build()
End If
msgbox(2)
我测试了下,就是在临时表生成时出错了,请问下dtb.Build这句代码执行后会触发什么事件,我才知道去哪里找出错误
谢谢!

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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17116 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2019/9/27 15:27:00 [显示全部帖子]

把这三个事件maintablechanging、maintablechanged、currenttablechanged的代码都注释掉了,还是会出错,出错点击确定都一直是死循环,只能强行从任务栏结束任务后又可以打开,现在变成是打开项目后在不关闭的情况下再次在左上角的菜单那里重新选择这个项目再打开运行到5楼说的那里就会出错,如果关闭掉项目再打开就不会,旧版本使用就不会,从升级到0926的就出现了,除了上面三个事件外,  dtb.Build()还会触发哪些事件,我只能逐一查一下了,谢谢!

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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17116 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2019/9/30 9:46:00 [显示全部帖子]

找不到原因,现在删除BIN目录重新打开不会出错了,但就是有个规律,项目打开后不先关闭的情况下再次重新打开就会出错,如果先关闭再打开就没问题,
这个应该与释放内存有关吧,0908及以前的版本都没这个问题? 

图片点击可在新窗口打开查看此主题相关图片如下:打开出错.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17116 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2019/9/30 11:53:00 [显示全部帖子]

出错找到原因了,是因为在项目事件Initialize中在一已加载表中增加一临时列时出错了,
For Each dt As DataTable In DataTables
    Select dt.name
        Case "QtbSet"
            '---在表中添加表达式列存储解密KEY
            If DataTables("QtbSet").DataCols.Contains("Key") = False Then
                DataTables("QtbSet").DataCols.Add("Key", Gettype(String), 16)
            End If
        End Select
Next

把上面红色的那句代码注释就可以了,但是我不理解,是什么原因,增加临时列后第一个触发的事件是什么? 在datacolchanging中第一行就用msgbox(11)测试没显示就直接出错死循环了,提示错误就是3楼那个,但0908前的版本就没问题,

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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17116 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2019/9/30 22:48:00 [显示全部帖子]

更新到10月3号的版本,问题已经修复,谢谢!

 回到顶部