Foxtable(狐表)用户栏目专家坐堂 → 程序发生无法处理的异常错误


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

主题:程序发生无法处理的异常错误

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


加好友 发短信
等级:三尾狐 帖子:627 积分:6899 威望:0 精华:0 注册:2013/12/17 1:00:00
程序发生无法处理的异常错误  发帖心情 Post By:2017/1/11 2:00:00 [只看该作者]

发生无法处理的异常错误
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20170111015327.png
图片点击可在新窗口打开查看

 Dim arys1 As List(of String) = DataTables(cmb1.text).GetValues(zd1(cmbdx(0).text)) '记录第一分组列下有多少个不同值
    Dim uuu As Integer = arys1.count-1
    For kkk As Integer = val To 999+ val
        If kkk > uuu Then
            Return
        End If
        Dim na As String = arys1(kkk)
   'For Each na As String In arys1  

(如果只是运行时建立1000个表,程序能正常,再多时就会出现图片上的错误。关闭程序后可以再次运行这个集合下一个1000多个表,通过反复关闭程序后再运行不会出现错误,就是不能一次全部运行完,也就是如arys1这个集合只有1000个元素是可以的,但多了就会出错,关闭程序分批计算不会出错)
        '建一个临时表,每一个表就作一个图
        Dim dtb As New DataTableBuilder("作图")
        dtb.AddDef(hg1, Gettype(String), 32)
        For Each nayy1 As String In nay
            dtb.AddDef(nayy1, Gettype(Single))
        Next
        dtb.build
        Dim huh As String=""
        Dim drs As new List(of DataRow)
        drs = DataTables(cmb1.text).Select("[" & hg1 & "]='" & na & "'")
        For Each dr As DataRow In  drs
            Dim r As Row = Tables("作图").AddNew
            r(hg1) = dr(hg19)
            For Each na1 As String In nay
                r(na1) = dr(na1) '作图表中加选择的列的数据
            Next
            If huh =""  And hg20 <> "" Then
                huh = dr(tyt)
            End If
        Next


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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/1/11 8:55:00 [只看该作者]

代码不完整,分析不了问题。上例子看看


https://zhidao.baidu.com/question/567819397.html

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/11 9:13:00 [只看该作者]

1、做个例子上来测试;

 

2、为什么要建1000个表那么变态啊,你代码肯定有问题。


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


加好友 发短信
等级:三尾狐 帖子:627 积分:6899 威望:0 精华:0 注册:2013/12/17 1:00:00
  发帖心情 Post By:2017/1/11 16:41:00 [只看该作者]

这个是实例,试试看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.foxdb


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/11 17:14:00 [只看该作者]

 根本就不需要生成一个表,你这样做是多余的。

 

 如果要画图,你可以直接弄。请直接说你要做什么,做个实例上来。


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


加好友 发短信
等级:三尾狐 帖子:627 积分:6899 威望:0 精华:0 注册:2013/12/17 1:00:00
  发帖心情 Post By:2017/1/11 21:06:00 [只看该作者]

第一,我的代码没问题,但是程序运行有问题,出现了错误,就这个问题本身值得研究。
第二,换一种方式可以解决问题,可以不需要生成一个表,但是这样的话我的程序的通用性会差,对不同表,都按要求生成临时表,再根据临时表运用函数生成图,这是一种设计思路。
还是希望用第一种方式,就要弄清楚为什么在运行1000多次循环后就会错误?另外,不要纠结能不能换一种思路解决问题,而是针对给出的测试例子,已证明代码没有问题,为什么程序还会报错,在这里进行研究会更有意义?因为在设计程序时不知道用何种代码或思路能保证程序能正常运行,按理说只要依据FT的规则编写的代码都应该能正常运行才对。

[此贴子已经被作者于2017/1/11 23:02:49编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/12 2:44:00 [只看该作者]

那你就不要循环build表格。

 

Dim arys1 As List(of String) = DataTables("测试").GetValues("考号") '记录第一分组列下有多少个不同值
Dim nb As new List(of String)
nb.add("A等级")
nb.add("B等级")
nb.add("C等级")
nb.add("D等级")
Dim shu1 As Integer =0

'建一个临时表,每一个表就作一个图
Dim dtb As New DataTableBuilder("作图")
dtb.AddDef("考号", Gettype(String), 32)
dtb.AddDef("成绩", Gettype(Single))
dtb.build

For Each na As String In arys1
    Tables("作图").DataTable.DataRows.Clear
    Dim drs As new List(of DataRow)
    drs = DataTables("测试").Select("[考号]='" & na & "'")
    For Each dr As DataRow In  drs
        Dim r As Row = Tables("作图").AddNew
        For i As Integer =0 To 3
            r("成绩") = dr(nb(i))
        Next
    Next
    shu1 =shu1+1
    If shu1 = 1100 Then
        messagebox.show("已执行1100次")
        Return
    End If
    '运行1000多次就会出错
    '对形成的每一个临时表,进行第二部分工作,也就是3000多个学生作3000多个图,所以生成3000多个临时表
    'Functions.Execute("ldtzcgths") '这个是作图函数
Next
messagebox.show("已完成作图!")


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


加好友 发短信
等级:三尾狐 帖子:627 积分:6899 威望:0 精华:0 注册:2013/12/17 1:00:00
  发帖心情 Post By:2017/1/12 10:16:00 [只看该作者]

的确是这样,不能反复生成临时表,如果反复生成,就会出现问题,这在编程设计时应注意的问题,从某种程度上来说,也是FT的bug.

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


加好友 发短信
等级:婴狐 帖子:5 积分:106 威望:0 精华:0 注册:2016/12/13 23:43:00
  发帖心情 Post By:2017/1/12 11:05:00 [只看该作者]

越用你会发现这样的问题越多,有时非常符合FT的编码规则,但程序就是报错,官方也不怎么解决或者解决不了(尤其并不是每次均报错)
[此贴子已经被作者于2017/1/12 11:05:36编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/12 11:07:00 [只看该作者]

以下是引用兰天在2017/1/12 11:05:00的发言:
越用你会发现这样的问题越多,有时非常符合FT的编码规则,但程序就是报错,官方也不怎么解决或者解决不了

 

重复new和重复build,这个本身,就是非常错误的做法,本来几秒钟完成的事,增加几十倍时间和几十倍内存,连电脑都看不下去所以报错了。


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