Foxtable(狐表)用户栏目专家坐堂 → 使用FT最令人揪心的问题


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

主题:使用FT最令人揪心的问题

帅哥哟,离线,有人找我吗?
大红袍
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/24 16:05:00 [只看该作者]

看9楼方法测试。

 回到顶部
帅哥哟,离线,有人找我吗?
凡夫俗子
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/5/24 16:19:00 [只看该作者]

唉 没时间反复测试 了

在关闭卸载表前 先将窗口表 绑定到一个 内部表吧

For Each vsc As String In gs_LshiBiaozd.Values '显示所有值 清空临时生成的所有数据导入建立的临时表,该类的表全部是 内部数据源
    If DataTables.Contains(vsc) Then
        Dim Builder As New ADOXBuilder
        Builder.Open()
        With Builder
            .DeleteTable(vsc)
        End With
        Builder.Close()
        DataTables.Unload(vsc)
    End If
Next
gs_LshiBiaozd.Clear '清除所有的键和值

For Each vsc As String In gs_LshiTjBiaozd.Values '显示所有值   清空临时生成的所有统计表
    If DataTables.Contains(vsc) Then
        Dim tb4 As Table = e.Form.Controls("Table4").Table   '关闭窗口前先改变tb4的绑定窗口 避免报错(系统BUG?)
        tb4.DataSource = DataTables("Main")   'g.BuildDataSource()  '关闭窗口前先改变tb4的绑定窗口 避免报错(系统BUG?)
        DataTables.Unload(vsc)
    End If
Next
gs_LshiTjBiaozd.Clear '清除所有的键和值
Dim tb2 As Table = Forms("数据导入").Controls("Table2").Table   '字段目标对应关系
tb2.DataTable.RejectChanges   '如果没有执行数据合并则取消对应关系的修改

 回到顶部
帅哥哟,离线,有人找我吗?
凡夫俗子
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/5/24 16:32:00 [只看该作者]

经查找 是项目里的CurrentTableChanged事件 中的

代码  CurrentTable.DataTable.SysStyles("EmptyArea").BackColor = Color.White 报的错

如果关闭 这句代码 则不报错,否则就报错

这算不算系统BUG了  如何解决?

新建立一个空项目 在

CurrentTableChanged事件 中的

加入代码  CurrentTable.DataTable.SysStyles("EmptyArea").BackColor = Color.White 

再做测试就报错了


系统报错提示的时候 能加上是哪一个事件不,很多时候只看到报错,但不知道是哪一个事件里的代码报的错,一个系统开发久了,大了,互相影响的代码就多了,如何跟踪报错是个麻烦呀。且FT的事件触发机制,触发顺序,次数不是一件能容易弄得清楚的事情。

[此贴子已经被作者于2016/5/24 16:38:12编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/24 16:37:00 [只看该作者]

我测试CurrentTableChanged也没问题。你升级到最新版

 

要不你加上代码判断一下

 

If currentTable Is Nothing Then Return


 回到顶部
帅哥哟,离线,有人找我吗?
凡夫俗子
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/5/24 16:40:00 [只看该作者]

已是最新版



图片点击可在新窗口打开查看此主题相关图片如下:qq图片20160524163817.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:窗口表的卸载问题.foxdb


要不你加上代码判断一下

 

If currentTable Is Nothing Then Return  加上了 还一样的报错



不知老师的测试 为什么是正常的,这是更令人可怕的事情。
100%可控的报错是可以理解和排除的,但差异化的出错更令人担忧。



[此贴子已经被作者于2016/5/24 16:52:43编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/24 17:21:00 [只看该作者]

没办法。不要随意unload表,unload以后,也不会马上释放资源的。

 

如果真要做,你可以做个计时器,定期unload一些表。


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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2016/5/24 18:17:00 [只看该作者]

用form.createSQLTable生成啊,然后Fill方法填充,关闭窗口自动销毁,还会有什么绑定的烦恼?

 回到顶部
帅哥哟,离线,有人找我吗?
凡夫俗子
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/5/24 18:33:00 [只看该作者]

以下是引用jspta在2016/5/24 18:17:00的发言:
用form.createSQLTable生成啊,然后Fill方法填充,关闭窗口自动销毁,还会有什么绑定的烦恼?


这不是问题的关键,绕道解决的方法有好几个。只是 CurrentTable.DataTable.SysStyles("EmptyArea").BackColor = Color.White  这句代码暴露了 FOXTABLE掉进了 自身的逻辑陷阱了,CurrentTable.DataTable 本身对于FOXTABLE而言,按说是必然存在的一个对象。但CurrentTable.DataTable有时并不存在,不管你在外围加上什么判断代码都不生效,不能拦截。说明这个问题是FOXTABLE的底层代码的问题,看来只有掌握了底层源码的狐狸爸爸才有可能解决这个问题。


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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2016/5/24 20:01:00 [只看该作者]

根本不需要卸载表,现在的电脑这点数据还能运行不了?

先销毁Table,再销毁临时表和统计表。因为你Table绑定了表,你先销毁源,自然会出现错误。

currentTable是指你当前的表,你销毁了导致没有了DataTable,自然报错,你要判断CurrentTable.DataTable是否存在。

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2016/5/25 9:05:00 [只看该作者]

不太明白,老大设计表的加载和卸载,完全可以灵活使用,你可以设计成打开不加载表,需要用到的表再加载,而且加载以后完全不需要再卸载,控制数据的加载就可以了.

 回到顶部
总数 21 上一页 1 2 3 下一页