Auto compactage de base

Auto compactage de base - VB/VBA/VBS - Programmation

Marsh Posté le 01-04-2004 à 16:26:46    

:hello:  Bonjour,
 
Je souhaite coder en VBA le lancement automatique du compactage de la base courante  :pt1cable: avant de lancer les traitements, est-ce que quelqu'un connait le code pour faire ça :bounce:??
 
Si vous pouvez m'aider, Merci d'avance   :jap:

Reply

Marsh Posté le 01-04-2004 à 16:26:46   

Reply

Marsh Posté le 01-04-2004 à 17:04:35    

Quelle version d'Access ?

Reply

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

Reply

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

Reply

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

Reply

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed