以文本方式查看主题

-  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=12521)

--  作者:cpayinyuan
--  发布时间:2011/9/6 12:05:00
--  在表中查找编号重复的行,什么样的代码效率高?

    我想要在一个表中查找编号重复的行,即只要某行的 编号 在表中有两个以上,就查找出来.我写的代码执行效率很低(我是用compute逐行统计的,需要很长时间),求一个效率高的代码.

   

    我的要求举例:若表中总共有6行数据

 

 


图片点击可在新窗口打开查看此主题相关图片如下:临时表.jpg
图片点击可在新窗口打开查看

 

 

则我想查找出来的结果共4行,即:显示第1行,第3行,第5行,第6行.


--  作者:mr725
--  发布时间:2011/9/6 12:19:00
--  
这个系统命令呢: Syscmd.Filter.ShowSameValues()
--  作者:cpayinyuan
--  发布时间:2011/9/6 12:29:00
--  
以下是引用mr725在2011-9-6 12:19:00的发言:
这个系统命令呢: Syscmd.Filter.ShowSameValues()

我没看明白这个命令是怎么用的.

 

估计不行吧,我要的不是要查询完全相同的重复的行,我是要查询指定列有重复值的行.


--  作者:mr725
--  发布时间:2011/9/6 13:40:00
--  

正是你要的,不妨你试试看:选定你指定的列,执行2楼代码····


--  作者:blackzhu
--  发布时间:2011/9/6 16:03:00
--  

查找重覆行:

 

Dim Index As Integer
Dim drss As List(Of DataRow)
drss = DataTables("导入订单").Select("[零件代号]=\'" & Tables("导入订单").current("零件代号") & "\'")
For Each dr As DataRow In drss
    Index= Tables("导入订单").FindRow(dr)
    If Index > -1 Then
        Tables("导入订单").Position = Index
            MessageBox.show("出现" & dr("零件代号") & "在" & Index & "行")
    End If
Next


--  作者:blackzhu
--  发布时间:2011/9/6 16:04:00
--  

保留一条数据,其余重覆全部删除

 

Dim t As Table =  Tables("导入订单")
t.Select(t.Rowsel,t.cols("零件代号").Index)
syscmd.Filter.ShowRedundantValues
For i As Integer = t.Rows.Count -1 To 0 Step -1
    t.rows(i).Delete
Next
t.filter = ""


--  作者:cpayinyuan
--  发布时间:2011/9/7 12:05:00
--  
以下是引用mr725在2011-9-6 13:40:00的发言:

正是你要的,不妨你试试看:选定你指定的列,执行2楼代码····

可以了,谢谢!

 

只是帮助中对系统命令的说明太简单,有些看不明白什么意思.