删除连续副本
一半的记录将被删除
DateTime
是独一无二的。其余字段与上一条记录匹配的记录应删除,留下“第一条”记录。(非连续副本应保留。)
DateTime Field1 Field2 Field3
-------------------- -------- -------- --------
2018-09-01 5:20:33 123 456 789
2018-09-01 5:20:34 123 456 789 â delete
2018-09-01 5:20:35 123 654 987
2018-09-01 5:20:36 234 567 890
2018-09-01 5:20:37 234 567 890 â delete
2018-09-01 5:20:38 234 567 890 â delete
2018-09-01 5:20:39 123 456 789
我正在遍历记录集(按日期排序)以删除重复项,但当我达到大约9500次删除时,我得到:
Error 3052: File sharing lock count exceeded.
Increase MaxLocksPerFile registry entry.
these instructions
,我可以增加注册表中的值,或者使用
SetOption
我不清楚影响
9,500
至少到
500,000
或更多。。。我不确定,但这似乎是个坏主意。
我的代码的简化版本:
Sub example_DelDupes()
Dim rs As Recordset, delCount As Long, rCount as long
Dim thisRecord As String, prevRecord As String
Set rs = CurrentDb.OpenRecordset("select * from myTable order by DateTime")
With rs
.MoveLast 'so I can get a recordcount...
.MoveFirst
rCount = .RecordCount '...required for progress bar (not shown)
Do While Not .EOF
thisRecord = !field1$ & !field2$ & !field3$ 'actually
If thisRecord = prevRecord Then
.Delete 'delete this record
delCount = delCount + 1
Else
prevRecord = thisRecord
End If
.MoveNext
Loop
.Close
End With
Set rs = Nothing
End Sub
.Delete
我也试过了
要删除的记录,其目的是在循环完成后删除它们,但是编辑产生的错误与删除相同。
different
LockTypeEnum
,或者用一种完全不同的方式来处理这个问题,但我希望避免尝试和错误。
思想?谢谢!