以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  异步生成报表错误  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=127197)

--  作者:wohenguaia
--  发布时间:2018/11/8 9:58:00
--  异步生成报表错误
不知为何我的电脑无法发送附件,点击“添加附件”没反映,
1、为什么异步生成报表后只打开一个文件,而且另外一个文件没有替换相应的列
2、第二个文件并且常驻内存



另外,客服老师说不能异步生成报表,那么如何解决,将表中的多行插入到模板文件中并且生成报表?如果在一个线程中采用
dim wrt as new wordreport(tb,a,b)
for each r as row in t.rows
wrt.buildone(r)
next
wrt.quit()
这种办法如果插入行数略多,比如5行,要等很长时间,让人很难接受。



所以,请问各大神有没有其他解决办法?
[此贴子已经被作者于2018/11/8 9:59:13编辑过]

--  作者:有点甜
--  发布时间:2018/11/8 10:32:00
--  

不能这样写代码。你异步调用的时候,只能调用一次函数,在函数里面生成全部的报表。

 

调用代码,在内部函数那里,循环每一行,生成。

 

Dim yj As String  = ProjectPath & "Attachments\\委托代理合同.doc" \'\'\'合同原件路径
Dim sc As String = ProjectPath & "Reports\\委托代理合同"  \'\'\'生成报表路径
Dim nametb As String = "临时合同编号表"
Functions.AsyncExecute("异步生成报表",yj,sc,nametb)


--  作者:wohenguaia
--  发布时间:2018/11/8 10:39:00
--  
那您的意思就是新开个线程,让这个线程去生成报表,主线程该干嘛干嘛,不会卡死了,对吗?
这样没解决生成多分报表的时间过长问题啊

--  作者:wohenguaia
--  发布时间:2018/11/8 10:48:00
--  那么如何解决生成多份报表时间过长问题呢
那么如何解决生成多份报表时间过长问题呢
--  作者:wohenguaia
--  发布时间:2018/11/8 10:49:00
--  
那您的意思就是新开个线程,让这个线程去生成报表,主线程该干嘛干嘛,不会卡死了,对吗?
这样没解决生成多分报表的时间过长问题啊


那么如何解决生成多份报表时间过长问题呢

--  作者:wohenguaia
--  发布时间:2018/11/8 11:02:00
--  
结题,试了下,新开线程的速度可以接受
多谢,有点甜

--  作者:有点甜
--  发布时间:2018/11/8 11:38:00
--  
以下是引用wohenguaia在2018/11/8 10:48:00的发言:
那么如何解决生成多份报表时间过长问题呢

 

这个基本是无法解决的。生成报表的效率本身不高,多行生成的话,耗时是一定的。