Hallo,
Ik heb een Access 2013 DB met 500k records. Ik probeer een aantal velden in de hele database te resetten naar NULL.
Ik probeer dat te doen middels een VBA module.
Tot 10000 records gaat dat goed. Daarna krijg ik een foutmelding "File Sharing Lock Count Exceeded". De tip is om het aantal op te hogen in de registry. Dat lijkt mij geen optie bij 500k records.
Dus ik dacht de database in delen op te delen (in onderstaand voorbeeld van 500 records) en dan tussentijds de workspace te sluiten. Ik blijf echter de fout krijgen.
Kan iemand mij vertellen hoe ik dit probleem oplos?
Onderstaande code die ik heb
Ik heb een Access 2013 DB met 500k records. Ik probeer een aantal velden in de hele database te resetten naar NULL.
Ik probeer dat te doen middels een VBA module.
Tot 10000 records gaat dat goed. Daarna krijg ik een foutmelding "File Sharing Lock Count Exceeded". De tip is om het aantal op te hogen in de registry. Dat lijkt mij geen optie bij 500k records.
Dus ik dacht de database in delen op te delen (in onderstaand voorbeeld van 500 records) en dan tussentijds de workspace te sluiten. Ik blijf echter de fout krijgen.

Kan iemand mij vertellen hoe ik dit probleem oplos?
Onderstaande code die ik heb
Code:
Sub Cleanup()
Dim myR As Recordset
Dim mtWS As Workspace
Dim RecordCounter As Variant
Dim GroupCounter As Variant
Dim AbsoluteCounter As Variant
Dim Groupsize As Variant
Set myR = CurrentDb.OpenRecordset("AllData") 'tijdelijk commentaar
Set MyWS = DBEngine.Workspaces(0) 'tijdelijk commentaar
RecordCounter = 0
AbsoluteCounter = 0
GroupCounter = 1
Groupsize = 500
Do Until myR.EOF
Set myR = CurrentDb.OpenRecordset("AllData")
Set MyWS = DBEngine.Workspaces(0)
'ga naar het record waar we zijn gebleven
myR.MoveFirst 'eerst naar het eerste record
myR.Move AbsoluteCounter 'en dan naar degene waar we zijn gebleven
While Not myR.EOF And RecordCounter <= Groupsize
MyWS.BeginTrans
myR.Edit
myR![Data_RX_WAN_1] = Null
myR![RX&TX_W1-2_hour23] = Null
'Zo heb ik nog 30 velden
myR.Update
RecordCounter = RecordCounter + 1
AbsoluteCounter = AbsoluteCounter + 1
myR.MoveNext 'naar het volgende record
MyWS.CommitTrans
Wend
myR.Close
MyWS.Close
Loop
Set myR = Nothing
Set MyWS = Nothing
End Sub
Laatst bewerkt: