Tampaknya Anda tidak pindah ke record lain di recordset. Cukup menambah i
tidak pindah ke rekaman berikutnya. Pendekatan yang lebih tradisional adalah beralih pada recordset tanpa memerlukan variabel Anda yang lain (i
dan rsCnt
).
Dim rs as DAO.Recordset
Set rs = CurrentDb.OpenRecordset("qryMyQuery", DB_OPEN_DYNASET)
rs.moveFirst
Do Until rs.EOF
rs.Edit
rs!FieldNameHere = "test"
rs.Update
rs.MoveNext
Loop
EDIT Setelah sedikit mencari, saya menemukan utas ini yang tampaknya mirip dengan masalah Anda. Di bagian bawah utas, saran dibuat untuk mengubah pengaturan ODBC untuk DSN MySQL Anda dengan memilih tab "Lanjutan" dan memilih opsi untuk "Kembalikan Baris yang Cocok". Posting juga mengatakan untuk menjatuhkan tabel tertaut dan kemudian menautkannya kembali ke database Access Anda. Saya belum pernah menggunakan Access dengan MySQL di masa lalu, jadi saya tidak tahu apakah ini akan berhasil atau tidak, jadi lanjutkan dengan hati-hati!
Anda juga dapat mencoba mengubah recordset Anda untuk menggunakan flag dbOptimistic untuk opsi penguncian recordset untuk melihat apakah itu membantu:
set rs = CurrentDB.OpenRecordSet("qryMyQuery", DB_OPEN_DYNASET, dbOptimistic)