Lezen in het Engels

Delen via


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.

  1. Start Microsoft Access.

  2. 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.

  3. 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
    
    
  4. Voer de subCloseObjects-routine uit.


Aanvullende resources

Training

Module

Manipulate data by using code in Dynamics 365 Business Central - Training

Do you want to know how to retrieve data from the database and manipulate that data or add new data? In this module, you learn about the different AL data manipulation statements.

Certificering

Microsoft Office Specialist: Access (Office 2016) - Certifications

Demonstreert dat u de vaardigheden hebt die nodig zijn om optimaal gebruik te maken van Access 2016 door een MOS-certificering (Microsoft Office Specialist) te verdienen.