Interf. Visual basic 6.0->base Access 2000

chicco -  
 cours statiatique -
monsieur s
j'ai un probleme pour faire la connection entre mon interface developpe avec visual basic 6.0 et ma base cree en access 2000.
comment resoudre ce probleme en une base hors v.b.

merci

10 réponses

  1. romain_natiez Messages postés 179 Statut Membre 31
     
    c'est koi ton problème exact ?
    c'est à dire avec kel objet tu veu faire la liaison avec access ou bien
    quest-ce ke tu veu faire avec ton application?
    Toi t'est au moins stagiare ! mdr 8-)

    romain_natiez
    1
  2. Beyes
     
    Je pense que tu as inséré un contrôle Data dans ton application ce qui t'as permis d'accéder à ta base Access. Or, le contrôle Data fourni avec VB6 utilise la bibliothèque Microsoft DAO 3.51 (ce qui correspond à Access 97).
    Pour accéder aux bases Access 97, 2000, il faut utiliser Microsoft DAO 3.6. Pour cela :
    Menu Projet > Références > Coche Microsoft DAO 3.6 Object Library.

    Remarques :
    - Si tu n'utilise pas vraiment le contrôle Data mais que tu manipules directement les objets de ta base de données. Tu peux le supprimer de ton interface. VB6 a juste besoin de cette référence à DAO 3.6
    - Les Services Packs ne résolvent pas ce "problème" puisqu'il s'agit d'une question de référence.
    - Lors du déploiement du programme, il faudra vérifier que cette biliothèque est bien incluse.

    Voilà tout

    Beyes
    1
    1. Jardins
       
      Bonjour,

      J'ai le même problème de format non reconnu...
      J'ai fait comme vous avez dit, à savoir, utilisé Microsoft DAO 3.6.
      Mais le problème persiste...
      Pourriez-vous m'aider s'il vous plait?
      Par avance merci!
      0
    2. MMIC
       
      Bonjour
      J'ai consulté votre réponse sur la connexion VB6 ET ACCESS 2000, et même en rajoutant le DAO 3.6 OBJECT LIBRARY , ca ne marche pas , mais moi ce qui me dérange c'est que j'ai pu ouvrir les bases qui sont incluses en exemple comme BIBLIO.MDB, mais dés que je crée une nouvelle base, il ne reconnait pas le format ;
      alors SVP, eclairez-moi sur ce sujet
      et merci d'avance
      0
  3. cours statiatique
     
    je peut chercher les cours statistique
    1
  4. PERRIN Victor
     
    Quand on essaie d'ouvrir une base de données ACCESS 2000 avec VB6 on a le message format non reconnu n° d'erreur 3343, j'ai été obligé de la convertir en ACCESS 97 pour pouvoir l'utiliser. J'ai pensé que VB6 datant de 1997 et ACCESS 2000 datant de 2000 en principe cela s'expliquait et que dans un service pack il y aurait la solution. Mais ni le sercice pack3, ni le pack4 ne résolvent le problème.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. muppet
     
    heu, ça fait longtemps que j'ai pas fait ça, mais je me souviens d'un problème similaire. En gros c'était une histoire de version de drivers.
    J'utilisait les objets ADO, pour se connecter à access 2000 ça donnait à peu près ça (de mémoire et avec un vieux bout de code):
    dim cn As ADODB.Connection

    Set cn = New ADODB.Connection

    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=uneBDD.mdb"

    etc. etc.
    Alors c'est pas forcement la même syntaxe avec DAO, mais l'idée est là, j'espère que ça vous donera une bonne piste ;)
    0
  7. erick
     
    il faut utiliser la connection ado pour pouvoir connecter via un data une base access 2000.
    Ou alorssimplement en creant les objets data directement en code.
    0
  8. noureddine
     
    Svp, j'ai tout essyé mais tjs le problème persiste quand je connecte ma base access 2000 et vb6 par le controle DATA
    0
  9. jeancc
     
    J'aile même problème mais en utilisant Access 2003
    0
  10. sam3000 Messages postés 1226 Statut Membre 144
     
    Un conseil : changer en ADO (code ou objets) au lieu du DATA, c'est plus stable et ça supporte toutes les version d'Access
    0
  11. sam3000 Messages postés 1226 Statut Membre 144
     
    Exemple:
    dans une FORM tu met une boite TEXT (text1) et le code suivant (je suppose que ta base est dans le meme dossier que le projet VB, et le fichier est "db1.mdb"):

    dim cnx as ADODB.connection
    dim rst as ADODB.recordset
    
    sub form_load()
      set cnx=new ADODB.connection
        cn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" + App.Path + "\db1.mdb;"
        If cnx.State = adStateOpen Then
            Set rst = New ADODB.Recordset
            rst.Open "select champ1 from table1", cnx
            text1.text=""
            While Not rst.EOF
                text1.text=text1.text+Str(rst.Fields(0).Value)+vbcrlf
                rst.MoveNext
            Wend
            rst.Close
            Set rst = Nothing
            cnx.close
        end if
      set cnx=nothing
    end sub
    
    0
    1. ZAIANE
       
      Bonjour,
      J'ai le meme probléme j'utilise une base des données sous access2003 et je n'arrive pas à executer mon programme sous VB6. J'ai essayé avec DAO 3.6 mais pas de solution. Que faire svp
      0
      1. kurodo > ZAIANE
         
        Bonjour,
        j'ai eu ce problème avec une base access 2003, lié à une requête faisant appel à une fonction VBA. le résultat de la requête est envoyé dans un fichier excel.

        j'ai donc créé une instance access sous vb6 et ceci à résolu mon problème.
        Les références à intégrer sont : (menu Projet, Item Références...)
        Microsoft Excel 11.0 Object Library
        Microsoft Accessl 11.0 Object Library
        Microsoft DAO 3.6 Object Library

        Voici le code de la fonction qui lance access et bon courage

        Sub LanceIntanceAccess()
        Dim appAccess As New Access.Application

        ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++
        ' NombaseAccess : nom complet et Path de la base Access à ouvrir
        ' MaRequete : nom de la requête access à exécuter
        ' Vérifie si le fichier Excel existe déjà et le supprime
        ' CheminDuFichier : nom complet et path du fichier excel
        ' ------------------------------------------------------
        If Dir(CheminDuFichier) > "" Then
        Kill CheminDuFichier
        End If

        On Error Resume Next
        ' ----------------------------------
        ' Création de l'instance Access 2003, cela fonctionne aussi pour les autres versions d'access
        ' ----------------------------------
        Set appAccess = New Access.Application

        On Error GoTo LanceIntanceAccessErreur

        appAccess.Visible = False ' access ne sera pas visible sinon mettre à True

        ' -------------------------------
        ' Ouverture de la base de données
        ' -------------------------------
        appAccess.OpenCurrentDatabase NombaseAccess, False
        ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        ' Exécution et transfert des données dans le fichier excel
        ' --------------------------------------------------------
        appAccess.DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, MaRequete, CheminDuFichier
        ' ++++++++++++++++++++
        ' Gestion des messages ' c'est une procédure simple (TraiteMessage) qui écrit les message dans un fichier .log
        ' le fichier est ouvert puis fermé à chaque écriture.
        ' --------------------
        TraiteMessage "Les résultats de " & MaRequete & " sont dans le fichier " & CheminDuFichier
        ' ++++++++++++++++++++++++++++++
        ' Quite proprement l'application
        ' ------------------------------
        appAccess.CloseCurrentDatabase
        appAccess.Quit
        Set appAccess = Nothing
        Exit Sub

        LanceIntanceAccessErreur:
        If Not (appAccess Is Nothing) Then ' L'application est toutefois lancée donc ...
        appAccess.Quit
        Set appAccess = Nothing
        End If
        TraiteMessage "Fin ANORMALE du Traitement de " & MaRequete
        End Sub
        0