以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 新增614行,耗时43秒,有没有更快速代码 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=114256)
|
-- 作者:天一生水
-- 发布时间:2018/2/1 18:22:00
-- 新增614行,耗时43秒,有没有更快速代码
y2287958老师的代码,原贴:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=114054
此主题相关图片如下:666.jpg
![dvubb 图片点击可在新窗口打开查看](UploadFile/2018-2/20182118201921424.jpg)
|
-- 作者:有点甜
-- 发布时间:2018/2/1 18:33:00
--
Dim st As Date = Date.Now \'开始计时 If Forms("通知").Opened Then Dim t As Table = Forms("通知").Controls("Table1").Table Forms("通知").TimerEnabled = False t.StopRedraw For Each r As Row In Tables("批量增加_table1").GetCheckedRows For Each s As String In r("被告").split(",") Dim r2 As Row = t.AddNew r2("案号") = r("案号") r2("被通知人") = s r2("审判程序") = r("审判程序") r2("诉讼地位") ="被告" Tables("通知_Table1").Current("制作日期") = Date.Now Next Next Tables("通知_table1").Sort = "制作日期,案号" t.ResumeRedraw Forms("通知").TimerEnabled = True End If MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")
|
-- 作者:天一生水
-- 发布时间:2018/2/1 18:46:00
--
谢谢甜老师,用时2.5秒
此主题相关图片如下:7777.jpg
![dvubb 图片点击可在新窗口打开查看](UploadFile/2018-2/20182118445460896.jpg)
|
-- 作者:天一生水
-- 发布时间:2018/2/1 18:52:00
--
甜老师,下面这段预览word报表代码,数据行614行,拉黑所有行预览,耗时22分钟,麻烦老师也给看一下!
谢谢!
Dim Result As DialogResult Result = MessageBox.Show("将按照模板生成预览文书,但不会保存,可供打印!"& vbcrlf &"你可以选中多行行头,批量预览文书!"& vbcrlf &"是---预览"& vbcrlf &"否---返回", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If Result = DialogResult.Yes Then \'预览和生成分开处理,用下面代码预览 Dim tm As String = ProjectPath & "Attachments\\应诉通知书正本.doc" \'指定模板文件 With Tables("应诉通知书_table1") If .TopPosition > -1 Then \'如果选定区域包括数据行 Dim fileName As String = ProjectPath & "Reports\\应诉通知书\\预览.doc" \'指定目标文件 Dim wrt As New WordReport(Tables("应诉通知书_table1"),tm,fileName) \'定义一个WordReport For i As Integer = .TopPosition To .BottomPosition Dim r As Row = .Rows(i) wrt.BuildOne(r) wrt.RecordsOnEachPage =1 Next wrt.Show() \'显示报表 End If End With Else Return End If
|
-- 作者:有点甜
-- 发布时间:2018/2/1 20:00:00
--
word模板发上来测试。
word报表的话,会有你说的问题,报表越复杂,生成的行数越多,耗时越久。
大数据量,建议还是用excel来做吧;如果要用word,也建议一个一个word的生成,而不是生成在一个大word里面(如,10行或者60行生成一个文件)
|
-- 作者:天一生水
-- 发布时间:2018/2/1 20:26:00
--
10行17秒;60行30秒;再多就慢很多了
麻烦老师测试一下
|
-- 作者:有点甜
-- 发布时间:2018/2/1 20:40:00
--
没办法,试试这样,一个一个的生成。
Dim Result As DialogResult Result = MessageBox.Show("将按照模板生成预览文书,但不会保存,可供打印!"& vbcrlf &"你可以选中多行行头,批量预览文书!"& vbcrlf &"是---预览"& vbcrlf &"否---返回", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If Result = DialogResult.Yes Then \'预览和生成分开处理,用下面代码预览 Dim st As Date = Date.Now \'开始计时 Dim tm As String = ProjectPath & "Attachments\\通知书正本.doc" \'指定模板文件 With Tables("通知_table1") If .TopPosition > -1 Then \'如果选定区域包括数据行 Dim prs As Integer = 20 For p As Integer = 0 To math.Ceiling((.bottomposition-.Topposition+1) / prs) - 1 Dim fileName As String = ProjectPath & "Reports\\应诉通知书\\预览" & p & ".doc" \'指定目标文件 Dim wrt As New WordReport(Tables("通知_table1"),tm,fileName) \'定义一个WordReport For i As Integer = p * prs To math.min(.bottomposition-.topposition,( p + 1) * prs - 1) application.Doevents Dim r As Row = .Rows(.Topposition +i) wrt.BuildOne(r) wrt.RecordsOnEachPage =1 Next wrt.quit Dim proc As new Process proc.File = filename proc.start Next End If End With MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") Else Return End If
|