Veri Erişim Nesneleri 'ni (DAO) kullandıktan sonra veritabanı şişmesini önleme

Orta: Temel makro, kodlama ve birlikte çalışabilirlik becerileri gerektirir.

Bu makale yalnızca bir Microsoft Access veritabanı (.mdb) için geçerlidir.

Belirtiler

Bir kayıt kümesini açmak için Veri Erişim Nesneleri 'ni (DAO) uyguladıktan sonra Microsoft Access veritabanı şişmeye (veya hızla büyümeye) başladı.

Neden

Kayıt kümesi kodunda her döngüde bir kayıt kümesinin belleğini serbest bırakmazsanız, DAO daha fazla bellek kullanarak ve veritabanının boyutunu artırarak yeniden derleyebilir.

Çözüm

Gereksiz kaynakları kullanmaktan ve veritabanı boyutunu artırmaktan kaçınmak için, kayıt kümesine artık ihtiyacınız kalmadığında kayıt kümesinin belleğini açıkça kapatmak için Recordset nesnesinin Close yöntemini kullanın.

Recordset nesnesinin Close yöntemini kullanmadığınız için veritabanının boyutu artmışsa, Sıkıştır ve Onar yardımcı programını (Araçlar menüsünde) çalıştırarak veritabanının boyutunu küçültebilirsiniz.

Daha fazla bilgi

Kodda bir Recordset (veya QueryDef) nesnesi oluşturduğunuzda, işiniz bittiğinde nesneyi açıkça kapatın. Microsoft Access çoğu durumda Recordset ve QueryDef nesnelerini otomatik olarak kapatır. Ancak, kodunuzdaki nesneyi açıkça kapatırsanız, nesne açık kaldığında ara sıra örneklerden kaçınabilirsiniz. Aşağıdaki adımlarda, BIR Recordset veya QueryDef nesnesini kapatmak için DAO'yu nasıl kullanacağınız gösterilir.

  1. Microsoft Access'i başlatın.

  2. Örnek veritabanı Northwind.mdb açın.

    NOT Bu makaledeki örnek kodda Microsoft Veri Erişim Nesneleri kullanılmaktadır. Bu kodun düzgün çalışması için Microsoft DAO 3.6 Nesne Kitaplığı'na başvurmanız gerekir. Bunu yapmak için, Visual Basic Düzenleyici Araçlar menüsünde Başvurular'a tıklayın ve Microsoft DAO 3.6 Nesne Kitaplığı onay kutusunun seçili olduğundan emin olun.

  3. Aşağıdaki kodu yeni bir modüle kopyalayın. Aşağıdaki örnek kod bir Recordset ve QueryDef nesnesini açar ve kapatır ve ileti kutuları içinde hem Recordset hem de QueryDef bilgilerini görüntüler.

    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. subCloseObjects yordamını çalıştırın.