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 :

comment réparer et compacter une base access sous vb6


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut comment réparer et compacter une base access sous vb6
    Bonjour,

    J'essaye de réparer et compacter une base de données access version 2003 en utilisant une interface VB6.
    J'ai ajouté les référence suivante à mon projet :

    stdole2.tlb#OLE Automation
    msado20.tlb#Microsoft ActiveX Data Objects 2.0 Library
    msjro.dll#Microsoft Jet and Replication Objects 2.6 Library

    J'ai aussi déclaré une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim jro As jro.JetEngine
    J'ai écrit la procédure suivante de réparation et de compactage :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Private Sub CompactDatabaseAccess2(PS_toutesBases As String)
     
    Const S_provider As String = "Provider=Microsoft.Jet.OLEDB.2.6;" 
    Const S_engine As String = "Jet OLEDB:Engine Type=3"
    Dim S_chaineBaseSource As String    'Nom de la base de données à réparer et compacter
    Dim S_chaineBaseCible As String     'Nom de la base de données après réparation et compactage
    Dim s_erreur As String
     
     
      If PS_toutesBases = "" Then
          'Si la base de données n'existe pas
            MsgBox "aucune base n'est spécifiée"
       Else
          'si la base de données existe
     
          'créer le nom temporaire de la base de données compactée
          S_chaineBaseSource = PS_toutesBases
          S_nomBaseTemp = Left(S_chaineBaseSource, (Len(S_chaineBaseSource) - 4))
          S_nomBaseTemp = S_nomBaseTemp + "TempABA" + ".mdb"
          S_chaineBaseCible = S_nomBaseTemp
     
            If Dir(S_chaineBaseCible) <> "" Then
             'si le nom temporaire de la base de données compactée existe
                 MsgBox "nom base cible existe déjà"
     
            Else
     
                 S_chaineBaseSource = S_provider + "Data Source=" + S_chaineBaseSource '+ ";" 
                 S_chaineBaseCible = S_provider + "Data Source=" + S_chaineBaseCible + ";" + S_engine 
     
                 Err.Clear
                 Set jro = New jro.JetEngine
                 On Error GoTo erreurCompactage
                 'compacter la base de données
                     On Error GoTo erreurjro
                     jro.CompactDatabase S_chaineBaseSource, S_chaineBaseCible
     
                     'supprimer la base de données source
                     Kill PS_toutesBases
     
     
                      'donner le nom de la base de données source à la base de données compactée
     
                      Name S_nomBaseTemp As PS_toutesBases
     
                      Set jro = Nothing
     
              End If  'fin si Dir(S_chaineBaseCible) <> ""
     
        End If 'fin si Dir(PS_toutesBases= ""
     
        Exit Sub
     
     
    erreurCompactage:
    s_erreur = "erreur, compactage" + vbCr + "numerreur : " + Str(Err.Number) + vbCr + Err.Description + vbCr + "la source : " + Err.Source
    MsgBox "erreur, compactage" + vbCr + "numerreur : " + Str(Err.Number) + vbCr + Err.Description + vbCr + "la source : " + Err.Source
    Exit Sub
     
     
    erreurjro:
    s_erreur = "erreur, jro compactage" + vbCr + "numerreur : " + Str(Err.Number) + vbCr + Err.Description + vbCr + "la source : " + Err.Source
    MsgBox "erreur jro compactage" + vbCr + "numerreur : " + Str(Err.Number) + vbCr + Err.Description + vbCr + "la source : " + Err.Source
    Exit Sub
     
    End Sub

    cependant à chaque exécution j'ai l'erreur suivante :

    numerreur : -2147221164
    description : Classe non enregistrée
    la source : Microsoft OLE DB Service Components




    en sachant que la chaîne source S_chaineBaseSource contient :

    Provider=Microsoft.Jet.OLEDB.2.6;Data Source=C:\sourcevb\basesAccessTest\basetest.mdb
    et la chaîne cible S_chaineBaseCible contient :

    Provider=Microsoft.Jet.OLEDB.2.6;Data Source=C:\sourcevb\basesAccessTest\basetestTempABA.mdb;Jet OLEDB:Engine Type=3
    pouvez-vous m'expliquer d'où vient l'erreur. A chaque fois que l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jro.CompactDatabase S_chaineBaseSource, S_chaineBaseCible
    est exécutée, j'ai le même message d'erreur ??????????
    merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    La prochaine fois, poste dans le bon forum Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const S_provider As String = "Provider=Microsoft.Jet.OLEDB.2.6;"
    Déjà, pour Access 2000 et >, le provider est :
    Provider=Microsoft.Jet.OLEDB.4.0
    tu le sors d'ou ton 2.6 ??
    Meme pour Access97, c'était déjà le 3.51 !!

    Faut pas confondre avec les versions !
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    j'ai utilisé la version 4.0 auparavant
    S_chaineBaseSource "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\sourcevb\basesAccessTest\basetest.mdb"
    S_chaineBaseCible "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\sourcevb\basesAccessTest\basetesttemp.mdb;Jet OLEDB:Engine Type=4"
    voîlà le message qu'il m'affichait :
    numerreur : -2147467259
    description : Impossible d'effectuer cette opération; les fonctionnalités de cette version ne sont pas disponibles dans les bases de données d'un format antérieur.
    la source : Microsoft JET Database Engine"
    je dois noter que j'utilise microsoft access 2003

    j'ai aussi utilisé la version 3.51

    S_chaineBaseSource "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\sourcevb\basesAccessTest\basetest.mdb"
    S_chaineBaseCible "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\sourcevb\basesAccessTest\basetesttemp.mdb;Jet OLEDB:Engine Type=4"
    voîlà l'erreur qu'il m'a affiché :
    numerreur : 3251
    description : Le fournisseur ou l'objet ne prend pas en charge cette opération.
    la source : Provider"

Discussions similaires

  1. Suppression d'un enregistrement d'une base Access sous vb6
    Par azzouz_soui dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 05/08/2008, 18h45
  2. Réponses: 1
    Dernier message: 05/06/2007, 10h43
  3. Comment compacter une base Access avec ADO ?
    Par langela94 dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/12/2005, 16h24
  4. [MFC] Comment créer et utiliser une base Access
    Par maitre hibou dans le forum MFC
    Réponses: 3
    Dernier message: 10/05/2004, 18h11

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