【发布时间】:2018-04-06 15:27:18
【问题描述】:
我正在编写一个 VBA 脚本来 1) 获取一个记录集 [rs],2) 将每条记录 [i] 中的 [data] 与所有其他记录进行比较 3) 如果记录相同,则删除记录 [i] , 4) 继续 2)
这里有一个sn-p供参考:
rs.MoveLast
n_records = rs.RecordCount
For i = 1 to n_records
rs.Move i
data = rs![Data]
Do
rs.MoveNext
data_current = rs![Data]
If (data = data_current) Then
rs.Move i
rs.Delete
GoTo NextIteration
End If
Loop Until rs.EOF
NextIteration:
Next
我的问题是:一旦记录被删除,记录集的索引会发生什么?
例如如果我有 100 条记录,并且第一次 For 迭代(i=1)发现重复并删除了记录[1];索引会重置吗? record[2] 现在会变成 record[1] 并且 #records 会是 99 吗?如果是这样;在 For(i=2); rs 是否正在移动到最初记录的内容[3]?!
【问题讨论】:
-
我不擅长访问,但我很确定
n_records将保持 100 并且记录 [2] 将保持记录 [2]。如果这与 excel 类似,则需要通过循环删除记录来后退(即For i = n_records to 1 Step -1)
标签: vba ms-access indexing dao recordset