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

さらに、私はあなたがどこかのフィールドを意味すると思います:

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 に答える