我试图循环ADODB结果集并在条件为真时删除记录。但是,当我这样做时,只删除记录的第一个字段,其余的记录仍然存在。
有任何想法吗?我有以下代码:
Set ytdRS = New ADODB.Recordset
ytdRS.Source = SQL_YTD
ytdRS.CursorType = adOpenStatic
ytdRS.LockType = adLockBatchOptimistic
rst.MoveFirst
Do Until rst.EOF
if (value = 1) then
rst.Delete
rst.MoveNext
end if
Loop
我没看到的一件事是ytdRS.Open命令。这可能是(问题的一部分)吗?
编辑:其他一些事情:
ytdRS!FieldName.Value
)或变量名。在这种情况下,它是一个变量名称。if
语句中使用MoveNext来保证你无限循环,因为除非Value
等于1,否则你的Recordset不会移动到下一条记录。下面的代码对我有用;您必须根据具体应用进行编辑。特别是你需要编辑ytdRS.Source
,ActiveConnection:=
方法中的Open()
和ytdRs![Order ID].Value = 36
行,以对应你发布的代码块中的“Value”语句。
希望这可以帮助!
请让我知道,如果你有任何问题。
Sub testme()
Dim ytdRs As ADODB.Recordset
Set ytdRs = New ADODB.Recordset
ytdRs.Source = "SELECT * FROM [Order Summary 2]"
ytdRs.CursorType = adOpenKeyset
ytdRs.LockType = adLockOptimistic
ytdRs.Open ActiveConnection:=CurrentProject.Connection
ytdRs.MoveFirst
Do Until ytdRs.EOF
If (ytdRs![Order ID].Value = 36) Then
ytdRs.Delete
End If
ytdRs.MoveNext
Loop
End Sub