Foxtable(狐表)用户栏目专家坐堂 → 新增614行,耗时43秒,有没有更快速代码


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

主题:新增614行,耗时43秒,有没有更快速代码

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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 & "秒")

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/1 20:00:00 [显示全部帖子]

word模板发上来测试。

 

word报表的话,会有你说的问题,报表越复杂,生成的行数越多,耗时越久。

 

大数据量,建议还是用excel来做吧;如果要用word,也建议一个一个word的生成,而不是生成在一个大word里面(如,10行或者60行生成一个文件)

 

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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


 回到顶部