以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  【求助】关联筛选后的无关数据删除  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=105567)

--  作者:季家桢
--  发布时间:2017/8/22 13:41:00
--  【求助】关联筛选后的无关数据删除
在订单物品明细表中我通过与订单表的订单号关联筛选筛选出了所需的物品明细,但在明细表的datatable中仍有无关物品的信息,我想把这部分信息删除该怎么做呢。或者如何在导入数据的时候就能只把那些相关行导入呢?
--  作者:有点甜
--  发布时间:2017/8/22 14:11:00
--  

1、关联筛选,你不是可以筛选【无对应值】的数据,筛选出来以后,删除,不就好了?

 

2、你导入的代码怎么写的?请做具体foxtable项目发上来看看。


--  作者:季家桢
--  发布时间:2017/8/22 14:22:00
--  
感谢有点甜老师的指导,还想请问下如何以代码的形式将无关行删除呢?deletefor函数中的filter参数好像无法实现关联筛选的效果。
--  作者:有点甜
--  发布时间:2017/8/22 15:07:00
--  
DataTables("表A").DeleteFor("第一列 not in (\'" & DataTables("表B").GetComboListString("第一列").replace("|", "\',\'") & "\')")
--  作者:季家桢
--  发布时间:2017/8/22 16:28:00
--  
如果我想删除当前表中的所有行(大概10万行左右)的数据而非删除表,我通过表的左上角选定所有行再点击删除行操作可以很快删除当前表中所有行,但我用

For Each r As Row In Tables("表A").rows

 r.Delete

Next


进行操作,耗时非常长,甚至程序会无响应,想请问老师如何使这段代码效率变高呢?


--  作者:季家桢
--  发布时间:2017/8/22 16:49:00
--  
Syscmd.Row.Delete() 的源代码有吗?如何执行这段代码却不弹出提示框直接执行呢?
--  作者:有点甜
--  发布时间:2017/8/22 17:14:00
--  

回复5楼

 

DataTables("表C").DeleteFor("")

 

 


--  作者:有点甜
--  发布时间:2017/8/22 17:15:00
--  
以下是引用季家桢在2017/8/22 16:49:00的发言:
Syscmd.Row.Delete() 的源代码有吗?如何执行这段代码却不弹出提示框直接执行呢?

 

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

 


--  作者:季家桢
--  发布时间:2017/8/22 17:26:00
--  
感谢有点甜老师指导,可是对于大量数据删除来说为何系统命令的删除比逐行删除的效率要高几十倍呢?哪怕对于十万行数据的删除,系统命令的速度也好像是一瞬间的同步删除。
--  作者:有点甜
--  发布时间:2017/8/22 17:31:00
--  

这样写呢?

 

systemready = False
With Tables("表C")
    .StopRedraw
    For i As Integer = .BottomPosition To .TopPosition Step -1
        .Rows(i).Delete()
    Next
    .ResumeRedraw
End With
systemready = True