Foxtable(狐表)用户栏目专家坐堂 → [求助]程序经常死掉


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

主题:[求助]程序经常死掉

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


加好友 发短信
等级:小狐 帖子:358 积分:4035 威望:0 精华:0 注册:2014/7/29 23:42:00
[求助]程序经常死掉  发帖心情 Post By:2015/11/14 13:37:00 [只看该作者]

这段代码,无法长时间循环,一会生成2个,一会生成20多个,有的时候生成100多个。程序经常死机。

请问我该怎么解决一下?谢谢!

Dim j As Integer

For j = 0 To 2827
    Dim tm As String  = ProjectPath & "Attachments\Labelplate.doc" '指定模板文件
    
    With Tables("名录")
        
        Dim fileName As String =ProjectPath & "ReportsDOC\" & Tables("名录").Rows(j)("号") & "-" & Tables("名录").Rows(j)("UN") & "-" &  Tables("名录").Rows(j)("品名") & " 标签.doc" '指定目标文件
        Dim fileName2 As String =ProjectPath & "ReportsDOC\" & Tables("名录").Rows(j)("号") & "-" & Tables("名录").Rows(j)("UN") & "-" &  Tables("名录").Rows(j)("品名") & " 标签.pdf" '指定目标文件
        
        '指定目标文件
        Dim wrt As New WordReport(Tables("名录"),tm,fileName) '定义一个WordReport
        wrt.Build() '逐行生成报表
        wrt.SaveToPDF(fileName2)
        wrt.quit
    End With
    
Next

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/14 14:39:00 [只看该作者]

代码本身没有什么问题。检查下模板和数据。

 

循环操作数据太多,可能会导致内存及磁盘空间不足。

 

看逻辑,生成的文件只是名称不一样,内容都一样的,没必要重复生成。生成一份,再改名复制就是了

 

 


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


加好友 发短信
等级:小狐 帖子:358 积分:4035 威望:0 精华:0 注册:2014/7/29 23:42:00
回复:(Hyphen)代码本身没有什么问题。检查下模板和...  发帖心情 Post By:2015/11/14 15:10:00 [只看该作者]

电脑16g内存。
需要生成2800多个文件。内容不一样。

但还是死掉。

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/14 15:35:00 [只看该作者]

用同一份数据做循环测试,试多几次,程序死掉的时候,生成到哪一份文件,分析一下那份文件以及表数据,有没有什么规律。

 

死掉的时候,观察内存和CPU的运行,word的活动进程(不是主进程,在资源监测器中查看)有几个。

 

试试,分成几批生成,比如一次循环100个,完成后再生成下100个文件,如此类推


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


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

呃,不是死的问题吧?比如你 一个生成需要5秒,1000个,就是5000秒,也就是一个多小时啊。

 回到顶部