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

VB 6 et antérieur Discussion :

probleme lors du compactage d'une base de donnée access


Sujet :

VB 6 et antérieur

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut probleme lors du compactage d'une base de donnée access
    Bonjour a tous,

    Je veux bien compacter une base de données access. J'ai développer 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Public Sub compress_db(database_path As String)
    Dim fs As New FileSystemObject
     
    Dim je As New jro.JetEngine
     
    Dim l_strNewDatabasePath As String
     
    On Error GoTo exit_sub
     
    l_strNewDatabasePath = database_path + ".new"
    Set je = New jro.JetEngine
     
    ' compact .mdb towards .new
    If fs.FileExists(l_strNewDatabasePath) Then
        fs.DeleteFile l_strNewDatabasePath, True
    End If
    je.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + database_path, _
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + l_strNewDatabasePath + ";Jet OLEDB:Encrypt Database=True"
     
    ' traitement ..........
     
    exit_sub:
        fs.DeleteFile l_strNewDatabasePath
        Exit Sub
     
    End Sub
    Le probleme est le suivant: lorsque le programme arrive à l'instruction qui fait le compactage de la base de données (je.CompactDatabase "Provider= .....) il ne termine pas le reste du traitement il saute directement vers exit_sub et exécute l'instruction: "fs.DeleteFile l_strNewDatabasePath"

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    aller à la ligne exit_sub si il se produit une erreur, donc a la suite de cette ligne, normalement on traite l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    je.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & database_path, _
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & l_strNewDatabasePath & ";Jet OLEDB:Encrypt Database=True"
     
    ' traitement ..........
     
        fs.DeleteFile l_strNewDatabasePath
     
    Exit Sub
     
    exit_sub:
    Debug.Print "Erreur N°" & Err & vbCrLf & "description:" & vbCrLf & Err.Description
     
    End Sub
    il saute directement vers exit_sub et exécute l'instruction, ......
    normal, tu dois avoir une erreur de syntaxe et/ou dans l'un de tes paramétres a la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    je.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & database_path, _
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & l_strNewDatabasePath & ";Jet OLEDB:Encrypt Database=True"
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    merci,
    mais c'est ça ma question, j'ai compris qu'il y une erreur dans cette ligne mais j'arrive pas à trouver l'erreur et pour cela j'ai posté cette discussion.

    le compactage se fait de cette façon mais ça marche pas pour mon cas.

    est ce quelqu'un peut me guider sur la source de l'erreur.

    Merci d'avance.

  4. #4
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Enleve donc la ligne "on error goto..." et regarde quelle erreur se produit.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    Merci,

    j'ai enlevé la ligne "On Error GoTo exit_sub"

    le programme sort de la procédure dès qu'il exécute cette instruction.

    J'attends votre aide. Merci.

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Si tes chemins/noms de source et destination sont correctes, regardes les liens proposés ICI post 3 et 4
    Il semblerait que Jet OLEDB:Encrypt Database=True doit être remplacé par Jet OLEDB:Engine Type=4
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Par défaut
    Bonjour

    voici une procedure qui te permettra de compacter ta base de donnée sans problème. Colle la dans un module de ton programme. Tu pourras alors l'appeller au niveau ou tu veux compacter ta bdd.

    Databasepath est le chemin de la base, ex:"C:\Projets\Projet1"
    Databasename est le nom de la base, ex:"Base.mdb"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub CompactDB(DatabasePath As String, DatabaseName As String)
        'renommage de la base -> tempMdb
        Name DatabasePath & "\" & DatabaseName As DatabasePath & "\tmp.mdb"
     
        'compactage de la bdd
        Call DBEngine.CompactDatabase(DatabasePath & "\tmp.mdb", DatabasePath & "\" & DatabaseName)
     
        'suppression base temp
        Kill DatabasePath & "\tmp.mdb"
    End Sub

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    Merci ,

    j'ai essayé la procédure que vous m'avez donner mais le probleme existe encore, le programme exécute les instructions de exit_sub dès qu'il se trouve au niveau de cette instruction: Name DatabasePath & "\" & DatabaseName As DatabasePath & "\tmp.mdb"

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    est ce que le probleme vient du fait que la base de données source est fermée lors du compactage ou bien parce que la base de donnee destination n'est pas créée lors du compactage. Si quelqu'un connait la réponse?

    Merci d'avance.

  10. #10
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Par défaut
    supprime carrement toute ta procedure compress_db et au meme endroit fait un Call CompactDB(..) -ma procedure- avec les bon parametres correspondants.

  11. #11
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    j'ai eu le meme résultat.

Discussions similaires

  1. compactage d'une base de données access 2007
    Par djelloharmel dans le forum VB.NET
    Réponses: 3
    Dernier message: 06/12/2012, 12h55
  2. compactage d'une base de données access déjà ouverte
    Par djelloharmel dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/08/2011, 17h16
  3. Probleme de connexion JDBC avec une base de donne mysql
    Par sultan_kafila dans le forum JDBC
    Réponses: 19
    Dernier message: 12/04/2006, 08h25
  4. [TestStand] Erreur lors d'un accès à une Base de données
    Par capblans dans le forum Autres langages
    Réponses: 1
    Dernier message: 20/07/2005, 10h29
  5. Réponses: 4
    Dernier message: 15/01/2005, 16h05

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