Nach der Verwendung von Data Access Objects (DAO) aufzublähen verhindern

Moderat: Erfordert grundlegende Makros, Codierung und Interoperabilität wissen.

Dieser Artikel gilt nur für Microsoft Access-Datenbank (MDB).


Eine Microsoft Access 2000-Version dieses Artikels finden Sie unter
209847 .
Microsoft Access 97-Version dieses Artikels finden Sie unter
186311 .

Problembeschreibung

Microsoft Access-Datenbank hat begonnen, Aufblasen (oder größer schnell) nach dem Implementieren von Data Access Objects (DAO) um ein Recordset zu öffnen.

Ursache

Wenn Sie den Recordset-Speicher nicht jedes Mal freigeben, wenn der Code des Recordset durchlaufen wird, kann DAO neu kompilieren, mehr Arbeitsspeicher verwenden und die Größe der Datenbank erhöhen .

Problemlösung

Vermeidung von unnötigen Ressourcen und steigenden Datenbankgrößen verwenden Sie die Close -Methode des Recordset -Objekts, um das Recordset Speicher explizit zu schließen, wenn Sie das Recordset nicht mehr benötigen.

Wenn die Datenbank vergrößert hat da nicht die Close -Methode des Recordset -Objekts verwendet haben, können Sie die Größe der Datenbank reduzieren, mit der
Programm zum Komprimieren und Reparieren (Menü Extras ).

Weitere Informationen

Beim Erstellen eines Recordset (oder eine QueryDef) Objekt im Code, schließen Sie das Objekt explizit, wenn Sie fertig sind. Microsoft Access schließt Recordset und QueryDef -Objekte in den meisten Fällen automatisch. Jedoch wenn Sie das Objekt im Code explizit schließen, können Sie gelegentliche Instanzen vermeiden, wenn das Objekt geöffnet ist. Die folgenden Schritte zeigen, wie mit DAO Recordset oder QueryDef -Objekt schließen.
  1. Starten Sie Microsoft Access.
  2. Öffnen Sie die Beispieldatenbank Nordwind.mdb.

    Hinweis: der Beispielcode in diesem Artikel verwendet Microsoft Data Access Objects. Damit dieser Code ordnungsgemäß ausgeführt wird, müssen Sie auf die Microsoft DAO 3.6-Objektbibliothek verweisen. Dazu klicken Sie im Visual Basic-Editor im Menü Extras auf Verweise , und aktivieren Sie das Kontrollkästchen Microsoft DAO 3.6-Objektbibliothek .

  3. Kopieren Sie folgenden Code in ein neues Modul. Der folgende Code öffnet und schließt ein Recordset und QueryDef -Objekts und Recordset und QueryDef Informationen in Meldungsfeldern angezeigt.
    Option Compare DatabaseOption 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. Die SubCloseObjects-Routine ausgeführt.
Eigenschaften

Artikelnummer: 289562 – Letzte Überarbeitung: 23.01.2017 – Revision: 1

Feedback