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

Compact Access

4 réponses
Avatar
ANDBRETON
Bonjour,

Y a t il un moyen de savoir, avant de le faire, si une base Access
gagnera =E0 =EAtre compact=E9e.
Je parle en terme de taille.

Sachant :
-qu'une base de plusieurs dizaines de Mo peut se retrouver r=E9duite =E0
quelques Ko.
-que j'en ai quelques milliers
-que mes utilisateurs sont sourds.
-que je ne veux pas utiliser le compact sur fermeture.

J'aimerai =E9crire une moulinette qui scanerait les .mdb et qui les
compacterait si le gain de place est sup=E9rieur =E0 un certain
pourcentage.

Merci pour vos id=E9es.

4 réponses

Avatar
Jean-marc
ANDBRETON wrote:
Bonjour,


Hello,

Y a t il un moyen de savoir, avant de le faire, si une base Access
gagnera à être compactée.
Je parle en terme de taille.


J'en doute, mais je ne retrouve plus ma source.

Sachant :
-qu'une base de plusieurs dizaines de Mo peut se retrouver réduite à
quelques Ko.
-que j'en ai quelques milliers
-que mes utilisateurs sont sourds.
-que je ne veux pas utiliser le compact sur fermeture.

J'aimerai écrire une moulinette qui scanerait les .mdb et qui les
compacterait si le gain de place est supérieur à un certain
pourcentage.


Il y a une solution plus élégante, amha:

1) maintenir une base de données (ou un simple fichier) dans
lequel on notera:
- Le nom de la base
- La taille de la base après compactage

2) Ecrire un programme qui examine les bases potentiellement
à compacter puis:
- Si la base n'est pas encore répertoriée, la compacter et
insérer les infos dans la BDD de controle (nom et taille)

- Sinon, Si la taille courante est sensiblement différente
de la taille notée dans la BDD, la compacter et mettre à
jour la BDD. (le "sensiblement différente" sera bien sur
un paramètre du programme).

- Sinon, on passe.

Ca à l'avantage d'être très simple à implémenter, très simple
à maintenir, très simple à étendre.

Si en plus tu veux limiter le nombre de bases à compacter
lors d'une même exécution de ton programme, il suffit de
mettre un petit compteur pour dire au programme de s'arrréter
quoiqu'il arrive après avoir traité (compacté) X bases.

Si toutes les bases grossissent tout le temps, tu peux ajouter
dans la base de contrôle une date de compactage, et tu ne
compactes que si en plus d'avoir grossi, la date de dernier
compactage est suffisamment ancienne (par exemple plus de 10
ou 20 jours ou n'importe). Ceci permettra une répartition
harmonieuse des compactages et plus ou moins la garantie de
toutes les compacter, à tour de rôle.

On peut raffiner encore au besoin.

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;

Avatar
Jean-marc
ANDBRETON wrote:
Bonjour,



Hello,

Y a t il un moyen de savoir, avant de le faire, si une base Access
gagnera à être compactée.
Je parle en terme de taille.



J'en doute, mais je ne retrouve plus ma source.

Sachant :
-qu'une base de plusieurs dizaines de Mo peut se retrouver réduite à
quelques Ko.
-que j'en ai quelques milliers
-que mes utilisateurs sont sourds.
-que je ne veux pas utiliser le compact sur fermeture.

J'aimerai écrire une moulinette qui scanerait les .mdb et qui les
compacterait si le gain de place est supérieur à un certain
pourcentage.



Il y a une solution plus élégante, amha:

1) maintenir une base de données (ou un simple fichier) dans
lequel on notera:
- Le nom de la base
- La taille de la base après compactage

2) Ecrire un programme qui examine les bases potentiellement
à compacter puis:
- Si la base n'est pas encore répertoriée, la compacter et
insérer les infos dans la BDD de controle (nom et taille)

- Sinon, Si la taille courante est sensiblement différente
de la taille notée dans la BDD, la compacter et mettre à
jour la BDD. (le "sensiblement différente" sera bien sur
un paramètre du programme).

- Sinon, on passe.

Ca à l'avantage d'être très simple à implémenter, très simple
à maintenir, très simple à étendre.

Si en plus tu veux limiter le nombre de bases à compacter
lors d'une même exécution de ton programme, il suffit de
mettre un petit compteur pour dire au programme de s'arrréter
quoiqu'il arrive après avoir traité (compacté) X bases.

Si toutes les bases grossissent tout le temps, tu peux ajouter
dans la base de contrôle une date de compactage, et tu ne
compactes que si en plus d'avoir grossi, la date de dernier
compactage est suffisamment ancienne (par exemple plus de 10
ou 20 jours ou n'importe). Ceci permettra une répartition
harmonieuse des compactages et plus ou moins la garantie de
toutes les compacter, à tour de rôle.

On peut raffiner encore au besoin.

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
3stone
Salut,

"ANDBRETON"
Y a t il un moyen de savoir, avant de le faire, si une base Access
gagnera à être compactée.
Je parle en terme de taille.

Sachant :
-qu'une base de plusieurs dizaines de Mo peut se retrouver réduite à
quelques Ko.
-que j'en ai quelques milliers
-que mes utilisateurs sont sourds.
-que je ne veux pas utiliser le compact sur fermeture.

- Quelques Ko, c'est à peine une base ;-)
- quelques milliers de quoi ?
- ce n'est pas à eux de le faire...


Vu les questions que tu te pose, tu n'arriveras pas
à justifier la raison pour laquelle tu ne veux pas compacter
à la fermeture !!!


J'aimerai écrire une moulinette qui scanerait les .mdb et qui les
compacterait si le gain de place est supérieur à un certain
pourcentage.


Ce genre de chose ne ce fait *que* sur une base dorsale
qui n'est jamais libérée, car comme tu ne l'ignore pas, pour
compacter une base, elle doit pouvoir être ouverte en
mode exclusif...

Le reste, n'est que réinventer l'eau chaude ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
3stone
Salut,

"ANDBRETON"
Y a t il un moyen de savoir, avant de le faire, si une base Access
gagnera à être compactée.
Je parle en terme de taille.

Sachant :
-qu'une base de plusieurs dizaines de Mo peut se retrouver réduite à
quelques Ko.
-que j'en ai quelques milliers
-que mes utilisateurs sont sourds.
-que je ne veux pas utiliser le compact sur fermeture.

- Quelques Ko, c'est à peine une base ;-)
- quelques milliers de quoi ?
- ce n'est pas à eux de le faire...


Vu les questions que tu te pose, tu n'arriveras pas
à justifier la raison pour laquelle tu ne veux pas compacter
à la fermeture !!!


J'aimerai écrire une moulinette qui scanerait les .mdb et qui les
compacterait si le gain de place est supérieur à un certain
pourcentage.


Ce genre de chose ne ce fait *que* sur une base dorsale
qui n'est jamais libérée, car comme tu ne l'ignore pas, pour
compacter une base, elle doit pouvoir être ouverte en
mode exclusif...

Le reste, n'est que réinventer l'eau chaude ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)