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.
Microsoft Access'i başlatın.
Ö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.
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
subCloseObjects yordamını çalıştırın.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin