När jag i ett recordset öppnar en tabell innehållande cirka 300000 poster där en post i taget uppdateras för att sedan läsas tillbaka får jag efter att ha gått igenom 9495 poster följande felmeddelande:
"File Sharing Lock Count exceeded"
"Increase MaxLocksPerFile registry entry."
I Regedit är MaxLocksPerFile satt till 9500, men det ska väl inte inverka då posterna återläses innan nästa läses in?
Kod följer nedan:
Option Compare Database
Option Explicit
Public MoveRs As Recordset
Public MoveSql As String
Public Sub X_CalculateCrossingTime()
On Error GoTo Err_X_CalculateCrossingTime
MoveSql = "SELECT TblClientPlaceMoves.Distance, TblClientPlaceMoves.CrossingTime FROM TblClientPlaceMoves;"
Set MoveRs = CurrentDb.OpenRecordset(MoveSql)
With MoveRs
.MoveFirst
Do Until .EOF
.Edit
!CrossingTime = 10
.Update
.MoveNext
Loop
.Close
End With
Exit_X_CalculateCrossingTime:
Exit Sub
Err_X_CalculateCrossingTime:
MsgBox Err.Description
Resume Exit_X_CalculateCrossingTime
End Sub
Hej
Jag glömde lägga till att jag gör tilldelningen av 10 bara för att testa koden i övrigt. Jag kommer att göra mer beräkningar men dessa är ännu ej inlagda.
Jag kör med:
Visual Basic for Applications
Microsoft Access 9.0 object library,
OLE automation,
Utility,
Microsoft DAO 3.6 object library,
Microsoft Visual Basic for Applications Extensibility 5.3
den sista innebär att beroende på det befintliga värdet i kolumn så gör man olika uppdateringar, så jag tror nog att det går att åstadkomma med hjälp av SQL.
------------------ essentitia preter non sans multiplicandum
267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849