Mysql
 sql >> Datenbank >  >> RDS >> Mysql

DAO.Recordset.Update führt zu einer Aufzeichnungssperre

Es scheint nicht, dass Sie zu einem anderen Datensatz im Recordset wechseln. Einfach i inkrementieren springt nicht zum nächsten Datensatz. Ein traditionellerer Ansatz wäre es, über das Recordset zu iterieren, ohne dass Ihre anderen Variablen benötigt werden (i und 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

BEARBEITEN Nach einigem Suchen stieß ich auf diesen Thread das scheint deinem Problem ähnlich zu sein. Am Ende des Threads wird vorgeschlagen, die ODBC-Einstellungen für Ihren MySQL-DSN zu ändern, indem Sie die Registerkarte „Erweitert“ und die Option „Übereinstimmende Zeilen zurückgeben“ auswählen. Der Beitrag sagt auch, dass Sie die verknüpfte Tabelle löschen und dann erneut mit Ihrer Access-Datenbank verknüpfen sollen. Ich habe Access mit MySQL in der Vergangenheit nicht verwendet, daher habe ich keine Ahnung, ob dies funktioniert oder nicht, also seien Sie vorsichtig!

Sie können auch versuchen, Ihr Recordset so zu ändern, dass es das dbOptimistic-Flag für die Option zum Sperren von Recordsets verwendet, um zu sehen, ob das überhaupt hilft:

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