以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  一次性删除表中所有行的代码优化  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=14991)

--  作者:小猪鑫鑫
--  发布时间:2011/12/9 10:38:00
--  一次性删除表中所有行的代码优化

狐爸及各位狐狸朋友们,大家好!对于一次性删除表中的所有行的代码,有好几种方法,但所用时间都各有不同,现针对系统自带的学习文件《代码优化》项目中的“表A”里10000行来测试,我想到了三种方式,所用时间相差很大,现转给大家参考

 第一种:

Dim sj As Date =Date.now

For Each dr As DataRow In DataTables("A").DataRows

For i As Integer =Tables("A").Rows.count-1 To 0 Step -1

DataTables("A").DataRows(i).delete

Next

Next

output.show((Date.now-sj).Totalseconds)

需时56.92秒

第二种:

Dim sj As Date =Date.now

DataTables("A").deletefor("项目 is not null")

output.show((Date.now-sj).Totalseconds)

需时3.625秒

第三种:

Dim sj As Date =Date.now

With Tables("A")

    .Select(0, 0, .Rows.Count - 1, .Cols.Count - 1)

End With

Syscmd.Row.delete()

output.show((Date.now-sj).Totalseconds)

需时0.59秒

对于第三种情况,系统会弹出一个对话框,用户需及时“回车”确定,回车的时间决定了反应的速度!

另我想请问狐爸,为什么我加入模拟回车键无效的(sendkeys.send("{enter}"),如果能自动回车,速度会更快,请狐爸指点!


 


--  作者:狐狸爸爸
--  发布时间:2011/12/9 11:08:00
--  

最简单的代码:

DataTables("A").DataRows.Clear()

 

另外建议看看这个:

http://www.foxtable.com/help/topics/0453.htm

 


--  作者:小猪鑫鑫
--  发布时间:2011/12/9 11:17:00
--  

0.406秒,真的很快,谢谢指导!

另不明您要我看上面帮助文件的用处,我是想问当有对话框弹出,我模拟按下回车键(sendkeys.send("{enter}") ,为什么无效?


--  作者:狐狸爸爸
--  发布时间:2011/12/9 11:23:00
--  

1、同样的代码,加上这两行,会提速很多:

 

Dim sj As Date =Date.now
Tables("表A").StopRedraw
For Each dr As DataRow In DataTables("A").DataRows
    For i As Integer =Tables("A").Rows.count-1 To 0 Step -1
        DataTables("A").DataRows(i).delete
    Next
Next
Tables("表A").ResumeRedraw
output.show((Date.now-sj).Totalseconds)

2、

 

Dim sj As Date =Date.now
With Tables("表A")
    .Select(0, 0, .Rows.Count - 1, .Cols.Count - 1)
End With
Sendkeys.send("{ENTER}")
Syscmd.Row.delete()
output.show((Date.now-sj).Totalseconds)


--  作者:小猪鑫鑫
--  发布时间:2011/12/9 11:34:00
--  
狐爸:4楼的第一种方案需7.24秒(不太理想);第二种方案只要0.39秒,真的很强,谢谢
--  作者:狐狸爸爸
--  发布时间:2011/12/9 11:35:00
--  
从你原来的56秒多到7秒多,已经提速很多了,这个例子是告诉你批量操作的时候要注意什么。
--  作者:小猪鑫鑫
--  发布时间:2011/12/9 11:37:00
--  
哦,知道了,谢谢
--  作者:hanxuntx
--  发布时间:2011/12/9 11:48:00
--  
不错学习了,谢谢
[此贴子已经被作者于2011-12-9 11:47:43编辑过]