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

Alléger une base

8 réponses
Avatar
Isa
Bonjour

A votre avis, comment all=E9ger une base ?

Je suis entrain de cr=E9er une base (gr=E2ce aux conseils et astuces
donn=E9s sur ce forum) ; j'ai encore des formulaires et des =E9tats =E0
cr=E9er et bien =E9videmment peu d'enregistrements et pourtant ma base
fait un poids important. Je l'ai compact=E9e mais elle est encore tr=E8s
importante.

Quelles sont les choses qui alourdissent une base ?


Merci

P.S. Je travaille avec Access 97

8 réponses

Avatar
Thierry (ze Titi)
Bonjour Isa !

A votre avis, comment alléger une base ?

Je suis entrain de créer une base (grâce aux conseils et astuces
donnés sur ce forum) ; j'ai encore des formulaires et des états à
créer et bien évidemment peu d'enregistrements et pourtant ma base
fait un poids important. Je l'ai compactée mais elle est encore très
importante.

Quelles sont les choses qui alourdissent une base ?


Qu'appelles-tu base lourde ? Quelle taille ?
As-tu séparé données et interface ?
Utilises-tu des images ? Si oui, comment sont-elles stockées ?

--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Isa
Bonjour Thierry

Et bien, elle pèse 5.4 Mo alors que j'ai encore des formulaires et
états à créer et pour ainsi dire pas d'enregistrements
Je n'ai qu'une seule image dans mon menu général

Hier soir j'ai travaillé dessus elle est montée à presque 7 Mo alors
que je n'ai pas inséré d'image. Après compactage, elle est redescendue
à 5.4 Mo

Au fait, j'utilise un système d'onglets pour mon menu , c'est peut-
être plus lourd que plusieurs formulaires ?

Non je n'ai pas séparé mes données de l'interface; je pense le faire
après lorsqu'elle sera prête à être utilisée mais là il me faud ra
encore un coup de main ;-)

P.S. J'ai demandé l'avis d'Access au niveau performance, certains
formulaires seraient trop chargés (trop de contrôles) mais je ne vois
pas comment faire autrement, étant donné que l'utlisateur doit avoir
une vue d'ensemble

Voili
Avatar
Thierry (ze Titi)
Et bien, elle pèse 5.4 Mo alors que j'ai encore des formulaires et
états à créer et pour ainsi dire pas d'enregistrements
Ca n'est pas si énorme que ça, ne t'inquiète pas. L'application sur

laquelle je travaille actuellement fait plus de 17Mo compactée et j'ai
séparé les données du reste...

Hier soir j'ai travaillé dessus elle est montée à presque 7 Mo alors
que je n'ai pas inséré d'image. Après compactage, elle est redescendue
à 5.4 Mo

Au fait, j'utilise un système d'onglets pour mon menu , c'est peut-
être plus lourd que plusieurs formulaires ?

Non je n'ai pas séparé mes données de l'interface; je pense le faire
après lorsqu'elle sera prête à être utilisée mais là il me faudra
encore un coup de main ;-)

P.S. J'ai demandé l'avis d'Access au niveau performance, certains
formulaires seraient trop chargés (trop de contrôles) mais je ne vois
pas comment faire autrement, étant donné que l'utlisateur doit avoir
une vue d'ensemble

Voili


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Isa
bon alors si ce n'est pas gros

Au fait, j'aimerai ajouter à un bouton sur lequel j'ai ajouté le code
Quitter l'application, le code qui permet de compacter la base en
arrière-plan (invisible pour l'utilisateur) avant fermeture

Si non pour scinder la base données/interface, il suffit de cliquer
sur Fractionnement de bases de données et suivre les instructions ? ou
créer un fichier MDE ?
Au final, j'aurai deux bases sachant qu'elle sera utilisée par
plusieurs personnes, faut-il mettre le fichier avec les formulaires
etc sur chaque micro et un seul fichier avec les données sur le
réseau ?

Merci d'avance pour les explications


Isa
Avatar
Thierry (ze Titi)
bon alors si ce n'est pas gros

Au fait, j'aimerai ajouter à un bouton sur lequel j'ai ajouté le code
Quitter l'application, le code qui permet de compacter la base en
arrière-plan (invisible pour l'utilisateur) avant fermeture


Dans un module Standard que tu nommes obligatoirement "Fonctions" (ce
nom est repris dans le script) :

Function CompactEXE() As Boolean

'Compacte la base de données en cours

On Error GoTo Err_CompactEXE

Dim strDbFile As String
strDbFile = CurrentDb.Name & ".tmp"

If Dir(strDbFile) <> "" Then Kill strDbFile

DBEngine.CreateDatabase strDbFile, dbLangGeneral
DoCmd.CopyObject strDbFile, , acMacro, "mcrCompact"

'Attention au nom du module !

DoCmd.CopyObject strDbFile, , acModule, "Fonctions"

Shell "MSACCESS.EXE """ & strDbFile & """ /x mcrCompact", _
vbMinimizedNoFocus

Quitte_CompactEXE:
Exit Function

Err_CompactEXE:
MsgBox Err.Description
Resume Quitte_CompactEXE

End Function

et

Public Function Compact()

Dim acApp As Access.Application
Dim strDbPath As String, strDbFile As String
Dim strDbFileOld As String

strDbPath = CurrentDb.Name 'Nom complet de la base
strDbFile = Left(strDbPath, Len(strDbPath) - 4) 'Nom complet de la base
sans l'extension ".mdb"
strDbFileOld = Left(strDbFile, Len(strDbFile) - 4) & ".old" 'Nom
complet de la base avec l'extension ".old"

Set acApp = GetObject(strDbFile)

With acApp
.SysCmd acSysCmdSetStatus, "Compactage en cours..."
.CloseCurrentDatabase
DBEngine.CompactDatabase strDbFile, strDbFileOld
Kill strDbFile
Name strDbFileOld As strDbFile
.OpenCurrentDatabase strDbFile
.SysCmd acSysCmdClearStatus
End With
Application.Quit
End Function

Pour finir la fameuse macro mcrCompact

Il faut donc créer une macro contenant juste l'instruction suivante :

Action : ExécuterCode
NomFonction : =Compact()

Dans ton formulaire, tu fais un joli bouton et tu lui attribues
l'évènement sur Clic :

=CompactEXE()

A tester...

Si non pour scinder la base données/interface, il suffit de cliquer
sur Fractionnement de bases de données et suivre les instructions ? ou
créer un fichier MDE ?
Pour scinder, c'est bien cette procédure. La création d'un MDE a plus

pour objectif de protéger ton code. Mais là, on touche un autre débat,
celui de la sécurité.

Au final, j'aurai deux bases sachant qu'elle sera utilisée par
plusieurs personnes, faut-il mettre le fichier avec les formulaires
etc sur chaque micro et un seul fichier avec les données sur le
réseau ?
C'est bien ça !


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Isa
bon je testerai ton code et te dirais quoi

mais petite précision concernant une base scindée :
que faut-il faire pour la base contenant les formulaires etc qui
seront mis sur chaque micro afin de faire la liaison avec la base
contenant les données
au niveau du chemin , cela fonctionne comment ? comment access peut-il
savoir qu'il faut aller chercher là ?
sachant que les utilisateurs ne doivent pas aller bidouiller mais
simplement cliquer sur le base et travailler

Isa
Avatar
Thierry (ze Titi)
mais petite précision concernant une base scindée :
que faut-il faire pour la base contenant les formulaires etc qui
seront mis sur chaque micro afin de faire la liaison avec la base
contenant les données
au niveau du chemin , cela fonctionne comment ? comment access peut-il
savoir qu'il faut aller chercher là ?
sachant que les utilisateurs ne doivent pas aller bidouiller mais
simplement cliquer sur le base et travailler
Lors du scindage, Access génère dans la base contenant les formulaires

(base frontale) des liaisons sur les tables (base dorsale). Si tu
déplaces la dorsale, il te faut rétablir les liaisons. Ceci se fait
avec le gestionnaire de tables liées (Outils | Utilitaires de bases de
données). Sélectionne toutes les tables, coche la case "Toujours
demander un nouvel emplacement" et valide. Access t'ouvre alors une
fenêtre te permettant de sélectionner le chemin de la dorsale. Une fois
celui-ci sélectionné, tu valides et Access te prévient lorsque la
liaison est générée. C'est tout. Lorsque tu distribues la frontale,
Access sait où aller chercher les données.

--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Isa
Explications très claires que je garde précieusement

mais petite pr�cision concernant une base scind�e :
que faut-il faire pour la base contenant les formulaires etc qui
seront mis sur chaque micro afin de faire la liaison avec la base
contenant les donn�es
au niveau du chemin , cela fonctionne comment ? comment access peut-il
savoir qu'il faut aller chercher l� ?
sachant que les utilisateurs ne doivent pas aller bidouiller mais
simplement cliquer sur le base et travailler
Lors du scindage, Access g�n�re dans la base contenant les formulaires

(base frontale) des liaisons sur les tables (base dorsale). Si tu
d�places la dorsale, il te faut r�tablir les liaisons. Cec i se fait
avec le gestionnaire de tables li�es (Outils | Utilitaires de base s de
donn�es). S�lectionne toutes les tables, coche la case "To ujours
demander un nouvel emplacement" et valide. Access t'ouvre alors une
fen�tre te permettant de s�lectionner le chemin de la dors ale. Une fois
celui-ci s�lectionn�, tu valides et Access te pr�v ient lorsque la
liaison est g�n�r�e. C'est tout. Lorsque tu distri bues la frontale,
Access sait o� aller chercher les donn�es.

--
Cordialement,
Thierry

Tout pour r�ussir avec Access :
http://www.mpfa.info