Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:一次性删除表中所有行的代码优化

1楼
小猪鑫鑫 发表于: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}"),如果能自动回车,速度会更快,请狐爸指点!


 

2楼
狐狸爸爸 发表于:2011/12/9 11:08:00

最简单的代码:

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

 

另外建议看看这个:

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

 

3楼
小猪鑫鑫 发表于:2011/12/9 11:17:00

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

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

4楼
狐狸爸爸 发表于: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)

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

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02051 s, 2 queries.