循环表,改变字段值

时间:2013-01-02 18:39:11

标签: ms-access access-vba

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

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

感谢您的帮助。

1 个答案:

答案 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