以文本方式查看主题

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

--  作者:yyzlxc
--  发布时间:2017/12/5 13:43:00
--  [求助]删除重复行解疑(已解决)
删除表中的重复值,用第一段代码可以实现要求,但是给出错误的提示,而用第二段代码则顺利通过。问题时是为什么运行第一段代码会出错呢?请各位老师指教,谢谢!!

运行第一段代码出错

For Each dr As DataRow In DataTables("清点明细").DataRows
    If dr.IsNull("编号") = False Then
        Dim dr2 As DataRow = DataTables("清点明细").Find("清点日期 = \'" & rq & "\' And 编号 = \'" & dr("编号") & "\' and _Identify > " & dr("_Identify"))
        If dr2 IsNot Nothing Then
            dr2.Delete
        End If
    End If
Next


图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看


运行第二段代码顺利通过

Dim i As Integer
For i  = DataTables("清点明细").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("清点明细").DataRows(i)
    Dim dr2 As DataRow = DataTables("清点明细").Find("清点日期 = \'" & rq & "\' And 编号 = \'" & dr("编号") & "\' and _Identify > " & dr("_Identify"))
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next
[此贴子已经被作者于2017/12/5 13:57:46编辑过]

--  作者:notebook
--  发布时间:2017/12/5 13:53:00
--  
批量删除要倒着删,所以第一种就会出错,第二种就没问题。
--  作者:yyzlxc
--  发布时间:2017/12/5 13:57:00
--  
谢谢notebook老师的指教,再次感谢!!
--  作者:有点色
--  发布时间:2017/12/5 14:08:00
--  

筛选重复,删除重复,参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=107764&skin=0