我正在尝试编写一段将在表中运行的代码,并将具有特定值的每个字段替换为另一个值。
Private Sub Form_Load()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb()
strSQL = "SELECT Profile3 FROM Bank WHERE 'AB'"
Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)
Do Until rst.EOF
With rst
If .RecordCount > 0 Then
.MoveFirst
.Edit
!Profile3 = "AA"
.Update
.MoveNext
End If
End With
Loop
End Sub
这就是我目前使用的,然而,当它运行时它崩溃可怕。我知道基本代码有效,因为当我拉出循环它工作,但只在第一个条目。
就像我在VBA中遇到的大多数问题一样,这可能是一个荒谬的简单修复,我忽略了。
感谢您的帮助。
答案 0 :(得分:1)
你不断前进。你需要在某个阶段继续前进。摆脱MoveFirst。
Do Until rst.EOF
With rst
.Edit
!Profile3 = "AA"
.Update
.MoveNext
End With
Loop
另外,我猜你的意思是某个地方:
strSQL = "SELECT Profile3 FROM Bank WHERE somefield='AB'"
然而,在这种情况下,我怀疑你需要的是:
strSQL = "UPDATE Bank SET Profile3 ='AA' WHERE Profile3 ='AB'"
CurrentDB.Execute strSQL, dbFailOnError