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
Je souhaite coder en VBA le lancement automatique du compactage de la base courante
Si vous pouvez m'aider, Merci d'avance