Home
Home

---Soumis par Dev Ashish---

Pourquoi CompactCurrentDatabase ne fonctionne pas à partir du code?

(Q)     J'essaie de compacter la base de donnée courante, à partir de mon code, un peu comme je peux le faire à partir du menu d'Access 97, mais depuis le code, Access m'amène un dialogue du genre  "Enter Database to compact from/to".   Qu'est-ce que je fais de pas correct?

(A)    En Access 97 et 2000, la commande de compacter, disponible depuis le menu, ne peut pas être recrée à partir du code. Jet demande, en effet, que la base de données soit fermée avant de démarrer le processus de compaction... et tant que votre code s'exécutera, la base de données courante ne pourra pas se fermer, et donc, vous ne pourrez pas la compacter depuis votre code..

Access 2000 & Access 97:

En Access 2000 (seulement), vous pouvez compacter automatiquement votre base de données chaque fois qu'elle se ferme, en cochant l'option Compact On Close disponible sous Tools | Options | onglet General.

Michael Kaplan a rendu accessible un compagnon basé sur COM ( COM Addin) qui permet de compacter la base de données actuelle et de réouvrir la base de données (ou une autre) en utilisant la même instance d'Access. 

TSI SOON (Shut One, Open New) Addin

Access 97 seulement: Vos options sont

(a)  créer une petite application en VB qui est lancée depuis votre base de données (à l'aide de Shell). Cette application accepte le nom d'un fichier point-mdb qu'elle ferme, compacte, puis ouvre à nouveau. Il y a quelques utilitaires pour ce faire:

Compactor Addin
mdbCompactor (VB5 utility)

(b)  créer une base de données  "Utility" qui compacte toutes les base de données dont le nom est fourni dans une table à cet effet. Pour plus d'information, consulter:

    Article Q158937:  How to Compact Databases at a Scheduled Time