Non sembra che ti stai spostando su un altro record nel recordset. Semplicemente incrementando i
non passa al record successivo. Un approccio più tradizionale sarebbe quello di scorrere il recordset senza la necessità di altre variabili (i
e 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
MODIFICA Dopo un po' di ricerche mi sono imbattuto in questo thread che sembra essere simile al tuo problema. In fondo al thread viene suggerito di modificare le impostazioni ODBC per il tuo DSN MySQL selezionando la scheda "Avanzate" e selezionando l'opzione "Restituisci le righe corrispondenti". Il post dice anche di eliminare la tabella collegata e quindi ricollegarla al database di Access. Non ho usato Access con MySQL in passato, quindi non ho idea se funzionerà o meno, quindi procedi con cautela!
Puoi anche provare a modificare il recordset per utilizzare il flag dbOptimistic per l'opzione di blocco del recordset per vedere se questo aiuta:
set rs = CurrentDB.OpenRecordSet("qryMyQuery", DB_OPEN_DYNASET, dbOptimistic)