Rechercher : dans
Par :

Compacter BD Access

Dernière réponse le 13 nov 2007 à 10:57:45 loulou, le 12 aoû 2005 à 16:47:22 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Office 2003

Meilleures réponses pour « Compacter BD Access » dans :
PhpMyAdmin - 1045- Access denied for user root@localhost VoirPhpMyAdmin - Access denied for user root’@localhost Cette astuce est destinée à ceux qui ont un problème d’ouverture de PhpMyAdmin (par exemple avec WAMP Server ou EasyPHP) avec l'erreur suivante : #1045- Access denied for user...
[Outlook] Réponse du serveur : Erreur 554 - Relay Access denied VoirVotre client de messagerie vous affiche l'erreur suivante : Erreur 554 - Relay Access Denied Ce problème est lié à l'utilisation d'un serveur de courrier sortant (serveur SMTP) sur un domaine n'appartenant pas au fournisseur d'accès. En effet, afin...
Infection Navipromo / Magic.Control / Instant Access / EgdAccess VoirQue faire en cas d'infection Navipromo/Magic.Control/Instant Access/EgdAccess ? Navipromo est une infection qui affiche des fenêtres publicitaires intempestives. Les programmes suivants installent cette infection : Funky Emoticons Games...
Carte mémoire Compact Flash VoirCompact Flash La mémoire Compact Flash (notée parfois CF) est un type de carte mémoire créé en 1994 par la firme SanDisk. La mémoire Compact Flash est constituée d'un contrôleur mémoire et de mémoire flash contenues dans un boîtier de faible...
WiMAX - 802.16 - Worldwide Interoperability for Microwave Access VoirQu'est-ce que le WiMAX ? WiMAX est l'abréviation pour Worldwide Interoperability for Microwave Access. Il s'agit d'un standard de réseau sans fil métropolitain créé par les sociétés Intel et Alvarion en 2002 et ratifié par l'IEEE (Institute of...

1

mohammed, le 14 aoû 2005 à 16:57:01
  • +1

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

Répondre à mohammed

2

loulou, le 15 aoû 2005 à 14:29:13

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!

Répondre à loulou

3

mohammed, le 16 aoû 2005 à 17:33:25
  • +1

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

Répondre à mohammed

4

Acarp47, le 12 nov 2007 à 22:04:32

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

Répondre à Acarp47

5

 Acarp47, le 13 nov 2007 à 10:57:45

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

Répondre à Acarp47