Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

DAO.Recordset.Update resulta em bloqueio de registro


Não parece que você está movendo para outro registro no conjunto de registros. Simplesmente incrementando i não se move para o próximo registro. Uma abordagem mais tradicional seria iterar sobre o conjunto de registros sem a necessidade de suas outras variáveis ​​(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

EDITAR Depois de pesquisar um pouco, encontrei este tópico que parece ser semelhante ao seu problema. Na parte inferior do tópico é feita uma sugestão para modificar as configurações de ODBC para seu DSN do MySQL selecionando a guia "Avançado" e selecionando a opção "Retornar linhas correspondentes". A postagem também diz para descartar a tabela vinculada e vinculá-la novamente ao seu banco de dados do Access. Eu não usei o Access com MySQL no passado, então não tenho idéia se isso funcionará ou não, então prossiga com cuidado!

Você também pode tentar alterar seu conjunto de registros para usar o sinalizador dbOptimistic para a opção de bloqueio do conjunto de registros para ver se isso ajuda:

set rs = CurrentDB.OpenRecordSet("qryMyQuery", DB_OPEN_DYNASET, dbOptimistic)