IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Compactage de BDD


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 264
    Points : 108
    Points
    108
    Par défaut Compactage de BDD
    Salut j ai developpé une application sous VBA access. Tout va bien sauf que j ai une base de donnée que j aimerai compacter a la fermeture. J y arrive sauf que dans mon repertoire source il me crée une nouvelle base de donnée dbX ( ( a chaque fois que je compacte il me crée une nouvelle db) de taille inférieure a la base de donnée source. Par contre la base de données source n a pas changé de taille.
    Merci d avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut
    C'est possible de compacter une base de données à sa fermeture? Comment fais-tu?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Psychopathe Voir le message
    C'est possible de compacter une base de données à sa fermeture? Comment fais-tu?
    Bonjour
    C'est possible de paramétrer cela dans les options de la base active.
    Par contre il vaut mieux éviter cette option en utilisation multi-utilisateurs.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 264
    Points : 108
    Points
    108
    Par défaut Compactage de BDD
    Exact dans les option de la base active
    Je suis obligé de compacter sinon ma base a une taille trop importante. Et je suis toujours confronté au meme probleme... des bases qui se dupliquent a chaque ouverture et modification.... A ne rien y comprendre...

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut
    Et en faisant un compactage normal (sans l'option à la fermeture), c'est toujours pareil?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Le compactage automatique ne se déroule pas toujours bien, surtout sur les bases un peu conséquentes.
    IL vaut mieux faire un script ou programme annexe qui compacte la base fermée.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 264
    Points : 108
    Points
    108
    Par défaut Compactage de BDD
    Merci pour vos réponses.
    Je suis preneur du style de script a ecrire GAYOT si ce n est pas trop demandé.
    Je le place ou ce script alors si j ouvre une base en mode creation, la modifie et la ferme ensuite??
    Merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Tu peux éventuellement t'inspirer de ceci.
    http://access.developpez.com/faq/?page=General#Compact

    Cela te permet par exemple de créer un fichier servant à en compacter un autre, en t'inspirant de la partie "code".

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2007
    Messages : 184
    Points : 188
    Points
    188
    Par défaut
    Bonjour,

    Personnellement j'utilise un fichier .bat (généré depuis le code VBA)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    ' création du fichier de commande
        Set FS = CreateObject("Scripting.FileSystemObject")
        Set F = FS.OpenTextFile(Repertoire & "system\COMPACT" & Destination & ".bat", 2, True)
        F.write "Rem Lance lle compactage des données "
        F.WriteLine
        F.write "Rem Auteur"
        F.WriteLine
        F.write "Rem 10/08/07 - génération depuis le code au 20/08/07 "
     '   F.WriteLine
     '   F.write "pause"
        F.WriteLine
        Dim SGBD As String
        SGBD = SysCmd(acSysCmdAccessDir) & "MSAccess.exe"  '20/08/07 ' nom et chemin d'access
        F.write Chr(34) & SGBD & Chr(34) & " " & Chr(34) & Repertoire & base & Chr(34) & " /compact"
        F.WriteLine
        F.write Chr(34) & SGBD & Chr(34) & " " & Chr(34) & Repertoire & base & Chr(34) & " /REPAIR"
        F.WriteLine
        F.write "Exit"
        F.Close
    le fichier .bat généré contient alors les lignes suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Rem Lance le compactage des données 
    Rem 
    Rem 10/08/07 - génération depuis le code au 20/08/07 
    "C:\Program Files\Microsoft Office97\Office\MSAccess.exe" "C:\base97\Mabase.mdb" /compact
    "C:\Program Files\Microsoft Office97\Office\MSAccess.exe" "C:\base97\Mabase.mdb" /REPAIR
    Exit
    attention Il faut vérifier le chemin d'Access !
    (SysCmd(acSysCmdAccessDir))

    LE .bat est éxécuté depuis l'application par un Shell
    juste avant de la quitter
    (et vérification du nb de connectés)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    '' lancement du bat de compression
    Dim Retval, Commande
    Commande = Repertoire & "system\COMPACT" & Destination & ".bat"
    ' vérification des connecté à la base dorsale
     
    If nbconnectés() = 1 Then
        ' mise à jour table de suivi des sauvegardes
        CurrentDb.Execute "Insert Into tblSauvegarde (Date_Compactage) Values (" & CDbl(DATE) & ")"
        ' exécution du bat
        Retval = Shell(Commande, 0) '  - 0 => fenêtre cachée
    Else
        Beep
        Beep
        MsgBox "Il a plusieurs utilisateurs connectés à la base dorsale " & DonneString() & " (qui contient les données). Le compactage et la réparation ne peuvent avoir lieu maintenant. Lorsque les autres utilisateurs seront déconnectés, pensez à renouveller l'opération.", vbCritical, "Opération impossible pour l'instant"
    End If
    ' quitter
    Application.Quit

    Bonne journée

    fevec

Discussions similaires

  1. [AC-2013] Compactage de bdd dorsale
    Par alpha_du_centaure dans le forum Access
    Réponses: 9
    Dernier message: 15/02/2015, 09h28
  2. Problème avec le compactage de la BDD
    Par redoran dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/12/2010, 12h10
  3. bloquer clavier pour compactage bdd
    Par host22 dans le forum Développement
    Réponses: 0
    Dernier message: 08/04/2010, 13h10
  4. [AC-2007] Plantage lors du compactage d'une bdd
    Par Library dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/05/2009, 11h28
  5. Message erreur lors de compactage bdd
    Par Daniel MOREAU dans le forum Access
    Réponses: 2
    Dernier message: 13/11/2006, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo