Foxtable(狐表)用户栏目专家坐堂 → 一次性删除表中所有行的代码优化


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

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

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


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
一次性删除表中所有行的代码优化  发帖心情 Post By: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楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2011/12/9 11:17:00 [显示全部帖子]

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

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


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


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2011/12/9 11:34:00 [显示全部帖子]

狐爸:4楼的第一种方案需7.24秒(不太理想);第二种方案只要0.39秒,真的很强,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
小猪鑫鑫
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2011/12/9 11:37:00 [显示全部帖子]

哦,知道了,谢谢

 回到顶部