以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问下面的代码运行为何慢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=96560)

--  作者:hbhb
--  发布时间:2017/2/23 11:33:00
--  请问下面的代码运行为何慢?
 大师:请问下面的代码如何优化,总共才50行遍列,为何要5秒钟才运行完?
Dim cm---d As Ne--w S-Q-L-Command  
    Dim dt As DataTable
    cmd.Con---necti
    cmd.Comm---andText = "SE-------LECT * From {zsjbsjcj} where zzzz2 = \'表1\'"
    dt = cm----d.----ExecuteReader()
    
    Dim tbkj As WinForm.Table = e.Form.Controls("Table1")
    Dim tb As Table
    tb = tbkj.Table
  

tb.DataTable.StopRedraw
    For Each r As DataRow In tb.DataTable.dataRows
        If r.IsNull("zcfzb1") = False Then
            r("zcfzb27") = dt.Compute("min(zzzz32)","zzzz4 = \'" & trim(r("zcfzb1")) & "\' and zzzz5 is null")  
            r("zcfzb9") = dt.Compute("min(zzzz21)","zzzz4 = \'" & trim(r("zcfzb1")) & "\' and zzzz5 is null")           
        End If
        If r.IsNull("zcfzb5") = False Then
            r("zcfzb28") = dt.Compute("min(zzzz32)","zzzz4 = \'" & trim(r("zcfzb5")) & "\' and zzzz5 is null")  
            r("zcfzb18") = dt.Compute("min(zzzz21)","zzzz4 = \'" & trim(r("zcfzb5")) & "\' and zzzz5 is null")   
        End If
    Next
    tb.DataTable.ResumeRedraw


--  作者:有点色
--  发布时间:2017/2/23 12:04:00
--  

 你这个表{zsjbsjcj}的数据肯定很多吧?计算一下耗时。

 

 如果是遍历行慢的话,你看看是否触发了datacolchanged事件。


--  作者:hbhb
--  发布时间:2017/2/23 12:49:00
--  
谢谢!经测试,是datacolchanged事件影响,可否直接下面的代码暂停所有事件,不暂停单个事件,否则全局变量太多,头昏?

SystemReady = False
Try
\'追加数据代码
Catch ex
As Exception
MessageBox.Show(
"追加数据失败")
End
Try
SystemReady =
True


--  作者:有点色
--  发布时间:2017/2/23 14:17:00
--  

 

你加上SystemReady,禁止触发事件,即可。