Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1215 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Auto compactage de base

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Auto compactage de base

n°689912
fabby69
Posté le 01-04-2004 à 16:26:46  profilanswer
 

: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:

mood
Publicité
Posté le 01-04-2004 à 16:26:46  profilanswer
 

n°689932
ratibus
Posté le 01-04-2004 à 17:04:35  profilanswer
 

Quelle version d'Access ?

n°689933
fabby69
Posté le 01-04-2004 à 17:06:49  profilanswer
 

ratibus a écrit :

Quelle version d'Access ?


 
Access 2000/2003, mais apparemment Access sauvegarde au format Access 2000

n°689955
deubal
Posté le 01-04-2004 à 17:18:23  profilanswer
 

question peut-être un peu bete mais je connais pas trop access. Ca sert a quoi de compacter la base??
Merci

n°690689
pumpkin031​2
Posté le 02-04-2004 à 11:59:26  profilanswer
 

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

n°1237394
Gusdabo
Posté le 03-11-2005 à 12:39:18  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Auto compactage de base

 

Sujets relatifs
intelligence artificielle, base de donné etc[SQL] Probleme de connexion à une base
QT + base de données[Resolu]erreur de base avec une stringstream
Chargement auto de modèles WordProblème de connection à une base de données Oracle
Quelle base de donnée utilisez-vous principalement ?[oracle] Un script pour genérer le script de creation de base
CONNEXION PHP - ORACLE (base de données n'est pas sur serveur apache)classer des données selon 2 critères dans une base SQL
Plus de sujets relatifs à : Auto compactage de base


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR