Comment éviter une surcharge de base de données après l’utilisation d’objets DAO (Data Access Objects)
Modéré : nécessite des compétences de base en macro, en codage et en interopérabilité.
Cet article s’applique uniquement à une base de données Microsoft Access (.mdb).
Symptômes
Une base de données Microsoft Access a commencé à grossir (ou à augmenter rapidement en taille) après l’implémentation d’objets DAO (Data Access Objects) pour ouvrir un jeu d’enregistrements.
Cause
Si vous ne libérez pas la mémoire d’un jeu d’enregistrements chaque fois que vous parcourez le code du jeu d’enregistrements, DAO peut se recompiler, en utilisant davantage de mémoire et en augmentant la taille de la base de données.
Résolution
Pour éviter de consommer des ressources inutiles et d’augmenter la taille de la base de données, utilisez la méthode Close de l’objet Recordset pour fermer explicitement la mémoire du jeu d’enregistrements lorsque vous n’avez plus besoin du jeu d’enregistrements.
Si la taille de la base de données a augmenté car vous n’avez pas utilisé la méthode Close de l’objet Recordset, vous pouvez réduire la taille de la base de données en exécutant l’utilitaire Compact et Réparer (dans le menu Outils).
Informations supplémentaires
Lorsque vous créez un objet Recordset (ou QueryDef) dans le code, fermez explicitement l’objet lorsque vous avez terminé. Microsoft Access ferme automatiquement les objets Recordset et QueryDef dans la plupart des cas. Toutefois, si vous fermez explicitement l’objet dans votre code, vous pouvez éviter des instances occasionnelles lorsque l’objet reste ouvert. Les étapes suivantes vous montrent comment utiliser DAO pour fermer un objet Recordset ou QueryDef.
Démarrez Microsoft Access.
Ouvrez l’exemple de base de données Northwind.mdb.
NOTE L’exemple de code de cet article utilise Microsoft Data Access Objects. Pour que ce code s’exécute correctement, vous devez référencer la bibliothèque d’objets Microsoft DAO 3.6. Pour ce faire, cliquez sur Références dans le menu Outils de la Rédacteur Visual Basic et vérifiez que la zone d’case activée Bibliothèque d’objets Microsoft DAO 3.6 est activée.
Copiez le code suivant dans un nouveau module. L’exemple de code suivant ouvre et ferme un recordset et un objet QueryDef, et affiche les informations Recordset et QueryDef dans les boîtes de message.
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
Exécutez la routine subCloseObjects.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour