以文本方式查看主题 - 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 |
-- 作者:有点色 -- 发布时间:2017/2/23 14:17:00 --
你加上SystemReady,禁止触发事件,即可。
|