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 :

Comment compacter une base Access avec ADO ?


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 31
    Points
    31
    Par défaut Comment compacter une base Access avec ADO ?
    Je sais que c'est une question récurrente, mais je n'ai pas trouvé mon bonheur dans les réponses existantes...

    J'ai tapé ce code pour compacter ma base Access (en ayant au préalable intégré la référence appropriée) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim jro As jro.JetEngine
     
    Set jro = New jro.JetEngine
     
    jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Access Datas\QuickAccess.mdb", _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Access Datas\QuickAccessCompact.mdb;Jet OLEDB:Engine Type=4"
    ...et ca devrait marcher.

    Le seul problème, c'est que magré le fait que je ferme la connexion avec ma base dans le formulaire précédent, j'obtiens un message d'erreur qui me dit qu'elle est ouverte en mode exclusif par un autre utilisateur ou application.

    Comment se débarrasser de la connexion (j'ai déjà ajouté le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set maConnexion=Nothing
    et le mais ça n'a rien changé...)

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 17
    Points : 20
    Points
    20
    Par défaut
    Si tu as créé une DSN qui pointe sur cette base de donnée supprime le
    et réessaye ton compacte. Sa devrait marcher


    Cordialement

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    tu devrais le faire en dao c'est plus facile
    j'ai ceci en magasin si tu trouves ton bonheur
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    Function comp()
    Set bd = CurrentDb()
    Dim t As Recordset
    Dim chem As String
    Dim oui As Boolean
    Dim nom As String
    Dim fichier As String
    Set t = bd.OpenRecordset("liste bases")
    t.MoveFirst
    Debug.Print t![fichier]
    Do Until t.EOF()
    chem = t![directorie]
    nom = t![fichier]
     
    oui = t![compact]
    If oui Then
    Debug.Print (chem & nom)
    DBEngine.CompactDatabase (chem & "\" & nom), (chem & "\" & "NOUV" & nom)
    Kill chem & "\" & nom
    Name chem & "\" & "NOUV" & nom As chem & "\" & nom
    fichier = chem & "\" & nom
    Open fichier For Input As #1
    tail = LOF(1)
    t.Edit
    t![ntaille] = tail
    t.Update
    Close #1
    End If
    t.MoveNext
    Loop
    DoCmd.OpenForm ("RESULTAT")
    ChDir ex
    End Function
    Elle est pas belle la vie ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    J'ai trouvé une solution toute bête : j'ai placé mon code de compactage en tout début de mon programme, juste avant l'ouverture de ma connexion. Ca ne résout pas le problème, mais j'ai pu le contourner de cette manière.

    Merci, je vais tester ton code.

Discussions similaires

  1. Comment exécuter une base Access avec clic Bouton ?
    Par quanou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/12/2008, 14h25
  2. [VB.NET] Comment compacter une base de données Access ?
    Par xVINCEx dans le forum Contribuez
    Réponses: 6
    Dernier message: 05/06/2008, 18h35
  3. Comment stocker un réel dans une base Access avec ADO ?
    Par thibouille dans le forum Bases de données
    Réponses: 1
    Dernier message: 27/11/2007, 08h59
  4. comment réparer et compacter une base access sous vb6
    Par rallain dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/11/2006, 10h42

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