以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [原创] 一个小的教训!  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=940)

--  作者:wcs
--  发布时间:2008/10/21 22:11:00
--  [原创] 一个小的教训!
本人用这样的语句试图删除30000多行数据:

dim zhs as integer
zhs = DataTables("订单").DataRows.Count
For i As integer = 0 To zhs-1
    DataTables ("订单").DataRows.Delete(i)
Next

结果我的两核本本CPU性能达到80%以上,持续很时间也完成不了,只有强制停止了。

仔细想想,帮助中有一个StopRedraw

可以停止绘制表

可能运用这个方法可以速度快一点吧。

不知各位大侠没有更快的方法,删除表中的所有数据?
[此贴子已经被作者于2008-10-21 22:32:43编辑过]

--  作者:狐狸爸爸
--  发布时间:2008/10/21 22:13:00
--  
DataTables ("订单").DataRows.Clear()
--  作者:wcs
--  发布时间:2008/10/21 22:34:00
--  

哈哈,我才试了试,这个要快一点的。不过还是没有达到我的快速要求。

DeleteFor(Filter)

Filter: 指定删除条件。

例如删除订单表中2007年2月1日以前的行,代码为:

DataTables
("订单").DeleteFor("[日期] < #2/1/2007#"
)

现在试试老大的建议!

[此贴子已经被作者于2008-10-21 22:34:16编辑过]

--  作者:wcs
--  发布时间:2008/10/21 22:39:00
--  
哈哈,就是要这个效果,一瞬间,不分青红皂白,统统删除!老大的建议好。30000条记录,一秒搞定了。

实际上我是想更新一个外部数据库里的数据,使之与财务数据库基本同步。

没办法,狐表无法实施外部数据表的“新增记录、修改记录”事件的编程,只能大批处理了。
--  作者:狐狸爸爸
--  发布时间:2008/10/22 8:28:00
--  
需要注意的是,Clear直接从后台删除数据,没有办法反悔的。
如果删除大量数据,请压缩项目。