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


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

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

帅哥哟,离线,有人找我吗?
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


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


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

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


 回到顶部
帅哥哟,离线,有人找我吗?
kgdce
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

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

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


加好友 发短信
等级:三尾狐 帖子:627 积分:6899 威望:0 精华:0 注册:2013/12/17 1:00:00
  发帖心情 Post By:2017/1/12 11:47:00 [显示全部帖子]

如果要是反复生成报表,每一个报表存为一个新文件,如下代码,会不会出现错误
For Each currow As Row In Tables(cmb1.text).Rows
Dim doc As New PrintDoc '定义一个报表
....
doc.SavePDF(strtxt2 & "\" & currow("H027"))
next


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


加好友 发短信
等级:三尾狐 帖子:627 积分:6899 威望:0 精华:0 注册:2013/12/17 1:00:00
  发帖心情 Post By:2017/1/12 12:08:00 [显示全部帖子]

谢谢


 回到顶部