Jak zabránit nafouknutí databáze po použití objektů DAO (Data Access Objects)
Střední: Vyžaduje základní dovednosti v makrech, kódování a interoperabilitě.
Tento článek se týká pouze databáze aplikace Microsoft Access (.mdb).
Příznaky
Databáze Aplikace Microsoft Access začala po implementaci objektu DAO (Data Access Objects) k otevření sady záznamů nafouklá (nebo se rychle zvětšovat).
Příčina
Pokud paměť sady záznamů neuvolníte pokaždé, když projdete kódem sady záznamů, může dao znovu zkompilovat a použít více paměti a zvětšit velikost databáze.
Řešení
Chcete-li se vyhnout spotřebovávejte nepotřebné prostředky a zvětšovat velikost databáze, použijte metodu Close objektu Recordset a explicitně zavřete paměť sady záznamů, když už sadu záznamů nepotřebujete.
Pokud se velikost databáze zvětšila, protože jste nepoužili metodu Close objektu Recordset, můžete velikost databáze zmenšit spuštěním nástroje Zkomprimovat a opravit (v nabídce Nástroje).
Další informace
Při vytváření objektu Recordset (nebo QueryDef) v kódu explicitně zavřete objekt po dokončení. Microsoft Access za většiny okolností automaticky zavře objekty Recordset a QueryDef. Pokud však explicitně zavřete objekt v kódu, můžete se vyhnout občasným instancím, když objekt zůstane otevřený. Následující kroky ukazují, jak pomocí rozhraní DAO zavřít objekt Recordset nebo QueryDef.
Spusťte Aplikaci Microsoft Access.
Otevřete Northwind.mdb ukázkové databáze.
POZNÁMKA Ukázkový kód v tomto článku používá objekty Microsoft Data Access. Aby tento kód běžel správně, musíte odkazovat na knihovnu objektů Microsoft DAO 3.6. Uděláte to tak, že kliknete na Odkazy v nabídce Nástroje v Editor Jazyka Visual Basic a zkontrolujete, že je zaškrtnuté políčko Knihovna objektů Microsoft DAO 3.6.
Zkopírujte následující kód do nového modulu. Následující ukázkový kód otevře a zavře sadu záznamů a objekt QueryDef a zobrazí informace o sadě záznamů a QueryDef v polích se zprávou.
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
Spusťte rutinu subCloseObjects.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro