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

Access Discussion :

[VBA] Compacter base de donnée


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut [VBA] Compacter base de donnée
    Bonjour,

    J'ai actuellement un formulaire constitué d'une zone de texte et d'un controle. Ce controle a pour but d'ouvir un explorateur , puis sélectionner une base de donnée. Une fois sélectionner, le chemin d'accés est transcrit dans la zone de texte.

    Je souhaiterais donc créer un controle qui a pour but de compacter et de créer un fichier .mde de la bd sélectioner. Voila donc si des personnes ont des idées sur comment concevoir ce bouton a l'aide du code, merci de me le faire parvenir.

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    ce qui est de compacter tout ce trouve dans la
    Comment compacter une base de données ?

  3. #3
    Membre régulier Avatar de Sonic
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Points : 96
    Points
    96
    Par défaut
    Salut
    Pour compacter la base tu peux utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBEngine.CompactDatabase NomBaseSource, NomBaseDestination
    Par contre c'est à toi de gérer le nom de base source et destination, fais une copie compacte et ensuite ecrase l'ancienne.
    Mais pour le mde je sais pas désolé

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    J'avais déjà repéré cette aide dans la FAQ, merci quand même .
    Mon probléme c'est que je n'arrive pas a mettre en relation le chemin d'accés écrit dans la zone de texte de mon formulaire, et le code pour compacter la base de donnée.

  5. #5
    Membre régulier Avatar de Sonic
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Points : 96
    Points
    96
    Par défaut
    Dans ta zone de texte (nommée Texte0 par ex) tu as le chemin complet d'accès à ta base (genre 'C:\BaseDonnees.mdb')
    Le code de compactage devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DBEngine.CompactDatabase Me.texte0, "C:\BaseDonneesCopie.mdb"
    Kill Me.texte0
    Name "C:\BaseDonneesCopie.mdb" as Me.texte0

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Ok merci je vais essayer

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    J'ai donc une zone de texte (nommée FilePath), j'ai donc appliqué le code suivant :
    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
    Private Sub Commande11_Click()
    Dim rep
    Dim sNomBaseTmp As String
    Dim sNomBase As String
     
    If IsNull(Me.FilePath) Then
        rep = MsgBox("Please select a database", vbOKOnly, "Configuration")
            If vbOK Then
            Me.FilePath = OuvrirUnFichier(Me.Hwnd, "Parcourir", 1, "Fichier Access", "mdb")
            End If
    Else
    sNomBase = Me.FilePath
    sNomBaseTmp = "C:\Documents and Settings\tmp-ach\Bureau\essai.mdb"
    DBEngine.CompactDatabase sNomBase, sNomBaseTmp
     
    End If
     
    End Sub
    Cette partie de code fonctionne, mon probléme est dés que je rajoute le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Kill sNomBase
    Name sNomBaseTmp as sNomBase
    Une fois ces 2 lignes rajouter le code ne fonctionne plus, je ne comprend pas pourquoi. Donc si quelqu'un a une explication merci de me la faire parvenir.

  8. #8
    Membre régulier Avatar de Sonic
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Points : 96
    Points
    96
    Par défaut
    Ouais le name ne marche que quand on reste ds le même rep
    Essaie plutôt ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if Dir(sNomBaseTmp)>"" then Kill sNomBaseTmp
    DBEngine.CompactDatabase sNomBase, sNomBaseTmp
    Kill sNomBase
    FileCopy sNomBaseTmp, sNomBase
    Kill sNomBaseTemp
    PS : si ca marche tjs pas essaie d'être plus précis que "ca ne fonctionne plus" (erreur de compile, erreur d'exécution,...) parce que ca aide pas trop sinon

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Ok, je vais essayer ton code aprés le repas.

    Quand j'ai dis le code ne fonctionne plus, cela voulait dire que sans ces 2 lignes de code, la base de donnée compacter était créer mais avec ces lignes aucun fichier n'était créer. J'ai donc essayer en enlevant la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Name sNomBaseTmp as sNomBase
    La base d'origine était donc supprimé, et une base compacté fut créer. Le probléme vient donc quand je souhaite renommer la base de donnée.
    J'espére qu'avec ton code sa marchera, bonne apétit

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    C'est bon, je te remercie ton code fonctionne , y me faut encore chercher comment transformer la base de donnée en .mde mais bon je pense que je vais trouver.

    Encore merci pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-Autocad] base de donnée via vba autocad
    Par waner72 dans le forum Général VBA
    Réponses: 5
    Dernier message: 04/04/2007, 09h10
  2. [VBA-E] Base de données Excel
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/12/2006, 15h59
  3. Compacter base de données liées ...
    Par snoopy69 dans le forum Access
    Réponses: 4
    Dernier message: 04/05/2006, 09h30
  4. [VBA-E]bases de données
    Par massilia80 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 03/03/2006, 17h48
  5. [VBA-E]Base de données
    Par PIERRE57 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/02/2006, 16h53

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