Hi,
I have created below piece of code in order to amend some data in an Access table:
Actually what the code is doing is replacing the data in field "Veld4" in table "Ways_Sorte d". This field holds a string with ID's, which is splitted with
into an array.
This array is stored in a table called "KeysFound" .
Another table in my database is containing the old ID and the new ID.
As said the rest of the code will replace the old id in "Veld4"with the new ID.
It is looping through 3.7 million records this way.
My problem is that after 250 loops or so my database has grown with 1mB, meaning that my database will be above the 2gB way before the code has finished.
I can not explain why the growth is happening and how I can stop this or at least reduce the growth
I have created below piece of code in order to amend some data in an Access table:
Code:
Dim Ways As DAO.Recordset Dim Keys As DAO.Recordset Dim Recordcount As Double Dim Records As Double Dim ID_Old As String Dim ID_New As String Dim STArray() As String Dim SaveTime As String Set Ways = CurrentDb.OpenRecordset("Ways_Sorted") Recordcount = 1 Records = 3724755 Ways.MoveFirst Dim word As Variant While Not Ways.EOF DoCmd.SetWarnings (False) DoCmd.OpenQuery "KeyFind:DEL" DoCmd.SetWarnings (True) Set Keys = CurrentDb.OpenRecordset("KeyFind") STArray = Split(Ways!Veld4, ";") For Each word In STArray If Len(word) > 0 Then Keys.AddNew Keys!IDOld = CDbl(word) Keys!IDNew = DLookup("[New ID]", "ID Keys", "[Old ID]=" & CDbl(word)) Keys.Update End If Next Keys.MoveFirst While Not Keys.EOF ID_Old = " " + Trim(Str$(Keys!IDOld)) ID_New = " " + Trim(Str$(Keys!IDNew)) Ways.Edit Ways!Veld4 = Replace(Ways!Veld4, ID_Old, ID_New) Keys.MoveNext Wend Keys.Close Me.Tekst1 = Recordcount Me.Tekst3 = Records - Recordcount Me.Tekst5 = FileLen(Application.CurrentProject.Path & "\Map_Convert_2.mdb") If FileLen(Application.CurrentProject.Path & "\Map_Convert_2.mdb") > 1977142784 Then 'Exit Sub End If DoEvents Ways!Done = True Ways.Update Ways.MoveNext Recordcount = Recordcount + 1 'CommandBars("Menu Bar").Controls("Tools").Controls("Database utilities").Controls("Compact and repair database...").accDoDefaultAction 'Stop Wend DoCmd.SetWarnings (False) DoCmd.OpenQuery "Ways_Amend ID" DoCmd.SetWarnings (True) MsgBox "New Map created"
Code:
STArray = Split(Ways!Veld4, ";")
This array is stored in a table called "KeysFound" .
Another table in my database is containing the old ID and the new ID.
As said the rest of the code will replace the old id in "Veld4"with the new ID.
It is looping through 3.7 million records this way.
My problem is that after 250 loops or so my database has grown with 1mB, meaning that my database will be above the 2gB way before the code has finished.
I can not explain why the growth is happening and how I can stop this or at least reduce the growth
Comment