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
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    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
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    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"
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    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
    Points : 3 685
    Points
    3 685
    Par défaut
    Enleve donc la ligne "on error goto..." et regarde quelle erreur se produit.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  5. #5
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    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
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    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
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Points : 71
    Points
    71
    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
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    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
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    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 régulier
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Points : 71
    Points
    71
    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
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    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