Så här förhindrar du översvältning i databasen när du har använt dataåtkomstobjekt (DAO)
Måttlig: Kräver grundläggande kunskaper om makron, kodning och samverkan.
Den här artikeln gäller endast för en Microsoft Access-databas (.mdb).
Symptom
En Microsoft Access-databas har börjat svälla (eller växa snabbt i storlek) när du har implementerat dataåtkomstobjekt (DAO) för att öppna en postuppsättning.
Orsak
Om du inte släpper en postuppsättnings minne varje gång du loopar igenom postuppsättningskoden kan DAO kompileras om med mer minne och öka databasens storlek.
Åtgärd
Om du vill undvika att förbruka onödiga resurser och öka databasstorleken använder du metoden Stäng för objektet Recordset för att uttryckligen stänga postuppsättningens minne när du inte längre behöver postuppsättningen.
Om databasen har ökat i storlek eftersom du inte använde metoden Stäng för objektet Recordset kan du minska storleken på databasen genom att köra verktyget Komprimera och reparera (på verktygsmenyn).
Mer information
När du skapar ett postuppsättningsobjekt (eller ett QueryDef)-objekt i kod stänger du uttryckligen objektet när du är klar. Microsoft Access stänger automatiskt objekten Recordset och QueryDef under de flesta omständigheter. Men om du uttryckligen stänger objektet i koden kan du undvika tillfälliga instanser när objektet förblir öppet. Följande steg visar hur du använder DAO för att stänga en postuppsättning eller Ett QueryDef-objekt.
Starta Microsoft Access.
Öppna exempeldatabasen Northwind.mdb.
OBSERVERA Exempelkoden i den här artikeln använder Microsoft Data Access-objekt. För att den här koden ska köras korrekt måste du referera till Microsoft DAO 3.6-objektbiblioteket. Det gör du genom att klicka på Referenser på verktygsmenyn i Visual Basic-Editor och kontrollera att kryssrutan Objektbibliotek för Microsoft DAO 3.6 är markerad.
Kopiera följande kod till en ny modul. Följande exempelkod öppnar och stänger en postuppsättning och ett QueryDef-objekt och visar både postuppsättnings- och QueryDef-information i meddelanderutorna.
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
Kör rutinen subCloseObjects.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för