Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fichier Access anormalement lourd (130 mo), où est le problème?

16 réponses
Avatar
Pat|Dez
Bonjour à tous,

Dans le cadre d'un projet, j'ai conçu un formulaire d'enregistrement faisant
appel à quelques lignes de code très simples en VBA pour
ajouter/modifier/supprimer des objets d'une table unique, contenant pour
l'instant 200 tuples, sous Access 2003. Tout fonctionne à merveille, mais
j'ai cependant été étonné de m'apercevoir que mon fichier access .mdb
occupait un espace anormalement élevé sur le disque (près de 130 Mo!). Y
a-t-il un problème de conception quelque part?

Merci de me faire part de vos expériences similaires.

10 réponses

1 2
Avatar
LiR
Bonjour,

Une base de données ne cesse de voir sa taille augmenter au fil de son
utilisation et de la modification des données.
Même si elle comporte peu de données, sa taille augmentera.

C'est pourquoi il faut régulièrement la compacter.

Ouvre ta base et vas dans le Menu :
Outils->Utilitaires de base de données->Compacter une base de données

Je pense que sa taille sera alors redevenue raisonnable

"Pat|Dez" a écrit :

Bonjour à tous,

Dans le cadre d'un projet, j'ai conçu un formulaire d'enregistrement faisant
appel à quelques lignes de code très simples en VBA pour
ajouter/modifier/supprimer des objets d'une table unique, contenant pour
l'instant 200 tuples, sous Access 2003. Tout fonctionne à merveille, mais
j'ai cependant été étonné de m'apercevoir que mon fichier access .mdb
occupait un espace anormalement élevé sur le disque (près de 130 Mo!). Y
a-t-il un problème de conception quelque part?

Merci de me faire part de vos expériences similaires.


Avatar
Pat|Dez
Merci pour votre intervention, c'est très apprécié.

Vous avez vu juste: en compactant la base de données j'ai gagné 9 Mo
d'espace, cependant elle demeure beaucoup trop lourde selon le bon sens! N'y
aurait-il pas d'autres avenues possibles?
Avatar
LiR
Bonjour,

Bon, 9 Mo sur 130, c'est presque rien de gagné...

ce serait donc plus un problème réel de ce qu'elle contient.

Dans la base, combien y a-t-il :
- de tables
- de formulaires
- d'états
- de modules

"Pat|Dez" a écrit :

Merci pour votre intervention, c'est très apprécié.

Vous avez vu juste: en compactant la base de données j'ai gagné 9 Mo
d'espace, cependant elle demeure beaucoup trop lourde selon le bon sens! N'y
aurait-il pas d'autres avenues possibles?


Avatar
Pat|Dez
Bonjour à nouveau,

Je me débrouille bien sur Access, sans pour autant en saisir parfaitement la
théorie; si bien que les termes «modules» et «états» me laissent perplexes!

Je peux cependant dire qu'il s'agit d'une table unique contenant 29 champs.
Les opérations sur cette table sont toutes effectuées à partir d'un simple
formulaire: création, mise à jour et suppression de tuples. Le formulaire est
conçu de manière à ce que monsieur tout-le-monde puisse l'utiliser: plusieurs
menus déroulants (11) sont présents, certains champs se renseignent
automatiquement (3) et il y a quelques cases à cocher (6). Sur l'ensemble des
menus déroulants, 7 offrent des choix prédéfinis provenant d'une requête sur
l'ensemble des données. Il y a présentement 200 tuples dans cette table de
données.

Je précise également que bien que la base de données prenne plus de temps
qu'à l'habitude pour s'ouvrir, une fois ouverte les opérations effectuées sur
celle-ci le sont rapidement et sans anicroche.

Merci encore de vous pencher sur mon cas!
Avatar
Gilbert
Bonjour,

N'as-tu pas des images dans certains champs de ta table?
Elles ont la particularité de faire enfler démesurément une base de données.
Il faut ne stocker que l'adresse du fichier image dans ta table pour éviter
ce genre de désagréments.

--
Cordialement,

Gilbert


"Pat|Dez" a écrit dans le message de
news:
Bonjour à nouveau,

Je me débrouille bien sur Access, sans pour autant en saisir parfaitement


la
théorie; si bien que les termes «modules» et «états» me laissent


perplexes!

Je peux cependant dire qu'il s'agit d'une table unique contenant 29


champs.
Les opérations sur cette table sont toutes effectuées à partir d'un simple
formulaire: création, mise à jour et suppression de tuples. Le formulaire


est
conçu de manière à ce que monsieur tout-le-monde puisse l'utiliser:


plusieurs
menus déroulants (11) sont présents, certains champs se renseignent
automatiquement (3) et il y a quelques cases à cocher (6). Sur l'ensemble


des
menus déroulants, 7 offrent des choix prédéfinis provenant d'une requête


sur
l'ensemble des données. Il y a présentement 200 tuples dans cette table de
données.

Je précise également que bien que la base de données prenne plus de temps
qu'à l'habitude pour s'ouvrir, une fois ouverte les opérations effectuées


sur
celle-ci le sont rapidement et sans anicroche.

Merci encore de vous pencher sur mon cas!


Avatar
Pat|Dez
Bonjour Gilbert,

Il se trouve qu'aucun champ de ma table ne contient d'images. Seules trois
images ornent mon formulaire et elles font 250 Ko chacune...

Merci de vous pencher à votre tour sur mon problème,
Pat|Dez
Avatar
Gilbert
Tu peux essayer d'importer tous les objets de ta base dans une nouvelle
base.

--
Cordialement,

Gilbert


"Pat|Dez" a écrit dans le message de
news:
Bonjour Gilbert,

Il se trouve qu'aucun champ de ma table ne contient d'images. Seules trois
images ornent mon formulaire et elles font 250 Ko chacune...

Merci de vous pencher à votre tour sur mon problème,
Pat|Dez


Avatar
Pat|Dez
Bonjour Gilbert,

J'ai bien tenté d'importer tous mes objets dans une nouvelle base et rien
n'y fait: ma base occupe toujours 120 Mo d'espace disque. Je peux cependant
lancer une piste en disant que le processus d'importation de mon formulaire a
été nettement plus long que ceux de mes requêtes et de ma table.

Erreur de conception?
Merci.



"Gilbert" a écrit :

Tu peux essayer d'importer tous les objets de ta base dans une nouvelle
base.

--
Cordialement,

Gilbert


Avatar
LiR
Bonjour,

Tu as donc visiblement au moins 1 table et au moins 1 formulaire dans ta base.

Tu devrais essayer d'importer dans une nouvelle base le formulaire seul,
puis voir la taille de cette base
Ensuite idem pour la Table.
Cela donnera une idée de ce qui est incriminé : la table ou le formulaire
(quoique je soupçonne que ta base comporte plus de choses...)

Par ailleurs, comme dit Gilbert, une image (même si elle est dans un
formulaire) peut faire considérablement augemnter la taille d'une base.
Il en est de même pour les Objets OLE.

J'ai fait le test avec une base (format 2002) toute vide, juste un
formulaire, avec rien dedans.
Je place dans ce formulaire une gentille petite jpeg de rien du tout qui
fait 70 ko.
La base fait alors 1456 ko ! autrement dit, ma gentille jpeg a vu sa taille
multipliée par 20 dans la base.
A noter que l'utilisation d'images dans une base est quasiment impossible
d'après mon expérience (que ce soit dans une table ou un formulaire).
Seul piste favorable : les images bitmap (BMP) sont beaucoup mieux gérées
(encore, cela dépend de la configuration de l'ordinateur...)

Quoiqu'il en soit, une estimation d'après ce facteur appliqué à ton cas
ferait 20 x 3 x 250 ko = 15 Mo

C'est déjà pas mal, mais on est loin des 130 Mo évidemment

"Pat|Dez" a écrit :


Bonjour Gilbert,

J'ai bien tenté d'importer tous mes objets dans une nouvelle base et rien
n'y fait: ma base occupe toujours 120 Mo d'espace disque. Je peux cependant
lancer une piste en disant que le processus d'importation de mon formulaire a
été nettement plus long que ceux de mes requêtes et de ma table.

Erreur de conception?
Merci.



"Gilbert" a écrit :

> Tu peux essayer d'importer tous les objets de ta base dans une nouvelle
> base.
>
> --
> Cordialement,
>
> Gilbert


Avatar
Pat|Dez
Bonjour à vous tous,

Ce sont d'excellentes pistes que tu m'as lancées LiR et je viens tout juste
de tenter l'expérience.

L'importation de mon formulaire seul dans une base vide de tout autre objet
me donne un fichier .mdb de 119 Mo, comme le sous-entendait la longue attente
lors de l'importation suggérée par Gilbert.

J'ai ensuite enlevé une des trois images, un JPEG de 233 Ko, figurant sur
mon formulaire; une fois compacté mon .mdb faisait 53 Mo. J'ai enlevé ma
deuxième image, un PNG de 50 Ko : le .mdb faisait alors 52 Mo. J'ai enlevé ma
dernière image, un JPEG de 1,5 Mo: après compaction le .mdb faisait 144 Ko.
C'est exponentiel tout ça!

Pour parfaire l'expérience, j'ai ajouté une image JPEG de 92 Ko à 72 dpi à
mon formulaire et le .mdb s'est éleveé à 3 Mo. Je l'ai ensuite remplacé par
la même image à 72 dpi au format BMP à 1,5 Mo et mon .mdb s'est élevé à 1,7
Mo.

Conclusion: Lorsqu'on ajoute une image en format JPG sur un formulaire
Access, l'espace que cette image occupe est multipliée de beaucoup, alors
qu'Access ne multiplie pas l'espace occupée par les images au format BMP.

Merci à vous tous pour vos conseils qui ont su régler le problème!
1 2