Compacter BD Access

Fermé
loulou - 12 août 2005 à 16:47
 Acarp47 - 13 nov. 2007 à 10:57
Bonjour,
Voici ma situation:
J'ai une bd access 2003 dans laquelle je fais exécuter 2 macros.
Par contre, entre les 2, je dois compacter ma bd manuellement parce que sinon, la bd devient trop grosse. Ensuite, j'exécute la 2e macro. Est-ce qu'il une façon de compacter la bd à partir du code?

Je sais qu'il y a le code : bdengine.compacting ("nombd") mais je ne peux pas compacter la bd lorsqu'elle est ouverte. Est-ce qu'il a une manière de tout faire le processus automatiquement?
Merci d'avance pour votre aide!

loulou

4 réponses

Salut, voici une solution automatique
- Une solution 'automatique' (à partir de MS-Access 2000) :
Menu Outils/Options, Onglet 'Général', cocher 'Compacter lors de la fermeture'.
Bonne chance.
plein de truc sur developpez.com
Merci
8
Salut loulou,
j'ai trouver ce code pour vous
http://bvrve.club.fr/Astuces_Michel/12accessvba.html
Compactez votre base de données :
Sub cmdCompacter_Click ()
sNomBase= "C:\Mes documents\Base.MDB"
sNomBaseTmp= "C:\Mes documents\BaseTmp.MDB"
'1. Compactage dans une nouvelle base
DBEngine.CompactDatabase sNomBase, sNomBaseTmp
'2. Suppression de la base originale
Kill sNomBase
'3. Renommer la base compactée avec le nom de la base originale
Name sNomBaseTmp As sNomBase
End Sub
bonne chance.
Merci
6
Merci beaucoup Mohammed,

J'ai utilisé le code et ça fonctionne à merveille.
Par contre, est-ce que tu sais si c'est possible de faire rouler une macro à partir d'une autre base de données.

Exemple : J'ai 2 macros dans la bd1 mais entre les deux, je dois compacter la base de données parce qu'elle devien énorme.

Avec ton code, je compacte la bd à partir d'une autre bd mais je dois faire rouler mes macros avant et après.

Est-ce que tu as une idée de la façon dont je pourrais faire ça!!

Merci encore!
0
Bonjour,
Pour ma part, le problème est plus délicat puisque la seule execution d'une macro (qui enchaine une nombre important de requetes) fait que ma base dépasse la taille limite d'accès (2Go) avant même la fin de l'execution. Je ne peux même pas avoir mon résultat donc...
Ca va surement passer par de l'optimisation...

Quelqu'un a des pistes à proposer?

Merci d'avance
-1
Bonjour,
J'ajoute que j'avais songé séparer ma base en deux pour doubler la marge de manoeuvre, même si je juge cette méthode particulièrement sale pour une base qui au départ ne pèse qu'une trentaine de Mo!

J'avais également songé à effectuer certaines opérations sur des jeux de données via des tableaux VBA et non plus par des requêtes histoire de limiter les entrées sorties sur le disque (ce qui, je crois, est la cause principale de l'augmentation de la taille d'un fichier access).

Ca aurait le mérite d'accélerer les traitements, ce qui ne serait pas plus mal. Mais je vous laisse imaginer l'usine à gaz que ca peut devenir!

Bref, j'attends vos remarques avec impatience. Non seulement pour la réussite de mon projet, mais surtout pour ma culture perso!

Merci
-1