以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]程序经常死掉 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77263) |
-- 作者:machle -- 发布时间: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 -- 发布时间:2015/11/14 14:39:00 -- 代码本身没有什么问题。检查下模板和数据。
循环操作数据太多,可能会导致内存及磁盘空间不足。
看逻辑,生成的文件只是名称不一样,内容都一样的,没必要重复生成。生成一份,再改名复制就是了
|
-- 作者:machle -- 发布时间:2015/11/14 15:10:00 -- 回复:(Hyphen)代码本身没有什么问题。检查下模板和... 电脑16g内存。 需要生成2800多个文件。内容不一样。 但还是死掉。
|
-- 作者:Hyphen -- 发布时间:2015/11/14 15:35:00 -- 用同一份数据做循环测试,试多几次,程序死掉的时候,生成到哪一份文件,分析一下那份文件以及表数据,有没有什么规律。
死掉的时候,观察内存和CPU的运行,word的活动进程(不是主进程,在资源监测器中查看)有几个。
试试,分成几批生成,比如一次循环100个,完成后再生成下100个文件,如此类推 |
-- 作者:大红袍 -- 发布时间:2015/11/15 11:02:00 -- 呃,不是死的问题吧?比如你 一个生成需要5秒,1000个,就是5000秒,也就是一个多小时啊。 |