1

我正在尝试编写一段代码,该代码将通过一个表运行,并将具有某个值的每个字段替换为另一个值。

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 时遇到的大多数问题一样,这可能是我忽略的一个荒谬的简单修复。

谢谢您的帮助。

4

1 回答 1

1

你总是先行动。你需要在某个阶段继续前进。只需摆脱 MoveFirst。

Do Until rst.EOF
    With rst
      .Edit
      !Profile3 = "AA"
      .Update     
      .MoveNext
    End With
Loop

另外,我猜你的意思是 WHERE somefield:

strSQL = "SELECT Profile3 FROM Bank WHERE somefield='AB'"

但是,在这种情况下,我怀疑您需要的是:

strSQL = "UPDATE Bank SET Profile3 ='AA' WHERE Profile3 ='AB'"
CurrentDB.Execute strSQL, dbFailOnError
于 2013-01-02T18:42:10.167 回答