Database-bloat voorkomen nadat u Data Access Objects (DAO) hebt gebruikt
Gemiddeld: vereist basisvaardigheden voor macro's, codering en interoperabiliteit.
Dit artikel is alleen van toepassing op een Microsoft Access-database (.mdb).
Symptomen
Een Microsoft Access-database begint te bloppen (of groeit snel in grootte) nadat u Data Access Objects (DAO) hebt geïmplementeerd om een recordset te openen.
Oorzaak
Als u het geheugen van een recordset niet telkens vrijgeeft wanneer u de recordsetcode doorloopt, kan DAO opnieuw compileren, meer geheugen gebruiken en de database groter maken.
Oplossing
Als u onnodige resources wilt gebruiken en de database groter wilt maken, gebruikt u de methode Sluiten van het object Recordset om het geheugen van de recordset expliciet te sluiten wanneer u de recordset niet meer nodig hebt.
Als de database groter is geworden omdat u de methode Sluiten van het object Recordset niet hebt gebruikt, kunt u de grootte van de database verkleinen door het hulpprogramma Comprimeren en herstellen uit te voeren (in het menu Extra).
Meer informatie
Wanneer u een Recordset-object (of een QueryDef)-object in code maakt, sluit u het object expliciet wanneer u klaar bent. In de meeste gevallen sluit Microsoft Access automatisch recordset- en QueryDef-objecten. Als u het object echter expliciet sluit in uw code, kunt u af en toe voorkomen dat het object geopend blijft. In de volgende stappen ziet u hoe u DAO gebruikt om een Recordset- of QueryDef-object te sluiten.
Start Microsoft Access.
Open de voorbeelddatabase Northwind.mdb.
OPMERKING De voorbeeldcode in dit artikel maakt gebruik van Microsoft Data Access-objecten. Deze code wordt alleen correct uitgevoerd als u naar de Microsoft DAO 3.6-objectbibliotheek verwijst. Klik hiervoor op Verwijzingen in het menu Extra in de Visual Basic Editor en zorg ervoor dat het selectievakje Microsoft DAO 3.6-objectbibliotheek is ingeschakeld.
Kopieer de volgende code naar een nieuwe module. Met de volgende voorbeeldcode worden een Recordset en een QueryDef-object geopend en gesloten en worden recordset- en QueryDef-gegevens weergegeven in de berichtvakken.
Option Compare Database Option Explicit Sub subCloseObjects() Dim db As DAO.Database Dim rs As DAO.Recordset Dim qd As DAO.QueryDef Set db = CurrentDb Set rs = db.OpenRecordset("Employees", dbOpenTable) Set qd = db.QueryDefs("Invoices") rs.MoveLast 'Move to the last record in the Recordset. MsgBox "The Employees Recordset is open." & vbCrLf & _ "The last Employee ID is " & rs![EmployeeID] & "." MsgBox "The Invoices query definition is open." & vbCrLf & _ "The first field in the query is " & qd.Fields(0).Name 'Explicitly close the Recordset and QueryDef objects. rs.Close qd.Close End Sub
Voer de subCloseObjects-routine uit.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor