Auto compactage de base - VB/VBA/VBS - Programmation
Marsh Posté le 01-04-2004 à 17:06:49
ratibus a écrit : Quelle version d'Access ? |
Access 2000/2003, mais apparemment Access sauvegarde au format Access 2000
Marsh Posté le 01-04-2004 à 17:18:23
question peut-être un peu bete mais je connais pas trop access. Ca sert a quoi de compacter la base??
Merci
Marsh Posté le 02-04-2004 à 11:59:26
Le compactage ne peut être executé dans la base en cours car l'opération consiste a fermer et enregistrer la base en l'enregistrant sous le même nom.
Il faut donc lancer l'opération depuis une autre base.
Si tu tiens à ce que l'action se lance à l'ouverture de ta base, tu peux faire un code autoexec du genre : à l'ouverture inscrit la date du jour dans une table "T", puis compte le nombre de date du jour dans la table "T". Si il y en a moins de 2, alors ouvre base de données "B2.mdb" et ferme la base en cours.
Et tu place en autoexec dans "B2.mdb" le code suivant :
Sub cmdCompacter_Click()
If IsBaseOpen(NomBaseAcompacter) = True Then: Exit Sub
Dim NomBase
NomBase = "C:\Mes documents\Base.MDB"
Dim NomBaseTmp
NomBaseTmp = "C:\Mes documents\BaseTmp.MDB"
DBEngine.CompactDatabase NomBase, NomBaseTmp '1. Compactage dans une nouvelle base
Kill NomBase '2. Suppression de la base originale
Name NomBaseTmp As NomBase '3. Renommer base compactée avec nom de la base originale
End Sub
Function IsBaseOpen(strBase As String) As Boolean
On Error Resume Next
Dim objAccess As Object
Set objAccess = GetObject(strBase)
If Err.Number <> 0 Then BaseOpen = False
If Err.Number = 0 Then BaseOpen = True
Set objAccess = Nothing
End Function
Marsh Posté le 03-11-2005 à 12:39:18
Salut, je n'arrive pas à faire cela parceque quand je ferme ma base d'origine, la base 2 est fermée également..
Une astuce??
Merci
G.
Marsh Posté le 01-04-2004 à 16:26:46
Bonjour,
Je souhaite coder en VBA le lancement automatique du compactage de la base courante avant de lancer les traitements, est-ce que quelqu'un connait le code pour faire ça ??
Si vous pouvez m'aider, Merci d'avance