Connexion access visual basic

Résolu
Bonjour,

Je dois réaliser une application Visual Basic qui utilise une base de donnée Access. J'ai cherché sur internet comment se connecter à Access sous Visual Basic et comment récupérer le résultat de requêtes mais je n'ai réussi à rien faire, même pas à me connecter à Access.

Est-ce que certains ont déjà fait cela? Si oui est-ce que vous auriez des liens ou alors est-ce que vous pourriez me montrer comment on se connecte et on effectue une requete en récupérant les résultat??

Merci d'avance ;)

21 réponses

Résumé de la discussion

La demande porte sur la connexion de Visual Basic à une base de données Access et sur l'exécution de requêtes pour récupérer des résultats. Plusieurs réponses expliquent qu'il faut choisir entre DAO et ADO, et détaillent l'ajout de références comme Microsoft DAO 3.6 Object Library ou OLE Automation, avec des remarques selon la version d'Access. Des exemples de code montrent l'utilisation de ADODB.Connection et ADODB.Recordset ou l'emploi de DAO avec OpenDatabase et OpenRecordset, ainsi que l'insertion et la récupération de données via diverses syntaxes. En cas de besoin, certains suggèrent d'utiliser un DataGrid pour lier directement les données, et d'adapter les références selon la version d'Access et le type de base (.mdb vs .accdb).

Bobot (l’IA à votre service)
  1. Bon et bien ca y est ca marche

    En fait ca vient des références, il faut rajouter la référence Microsoft DAO 3.6 Object Library
    En gros à la fin, on doit avoir les références suivantes :
    - Microsoft DAO 3.6 Object Library
    - OLE Automation
    - Visual Basic Objects and procedure
    - Visual Basic runtime Objects and procedure
    - Visual Basic For Application

    Pour info, j'ai Access 2000 alors peut etre qu'avec des versions antérieures ca marchera pas, qu'il faudra référencer une version antérieure de Microsoft DAO 3.6 Object Library

    Sinon le code que j'ai mis plus haut c'est exactement celui la ;)
    24
    1. slut mich juste pour te dire ke j ai eu le meme probleme ke toi ,je n arrivais pas a faire la jonction entre vb et mon access d'abord j'ai changé d'office pour me passer du 2003 au 2000 mais rien il manké kelke chose .ensuite j'ai converti access 2000 en 97 dans la boite a outil dudit .mais y avait encore un lou alors je me suis mis a fouiller(je nai pas la chance de pouvoir me connecter easy et demander de l aide online bikoze ke c 'est cher et seulementr dans les 6ber)
      donc j ai fouillé sur lpc et j ai abouti a la meme solution ke toi
      je suis passé de MS DAO 3.5 au 3.6 et la ca a marché.
      je sui dans une formation de programmation et c'etait une colle qu'on nous avait laissé
      ca marche et la tu me rassure.
      0
    2. pk moi pour moi ne marche pa je comprend pa
      0
    3. @bakatobj,moi aussi j ai un projet a realiser et il s agit d la connexion entre visuel basic et access et j arrive pas a resoudre le probleme.s il vous plais si vous pouvez m aider ça sera gentil.j ai creé les fenetres en vb et les fichiers en acceess et il m reste le lien entre eux par un code que j connai pa.drai
      0
  2. Je pense qu'il suffit d'intégrer un DataGrid au form en création et que un assistant s'ouvre alors pour permettre de définir l'origine des données.
    (il y a longtemps que j'ai utilisé VB)

    Sinon, il doit y avoir moyen d'indiquer le chemin d'accès quelque part dans la liste des propriétés...
    2
    1. et est-ce que tu connais les quelques lignes de code qui permettent de se connecter à Access et faire des requêtes stp?
      Parce que moi j'ai cherché mais rien n'a marché... :(
      0
      1. moi aussi je cherche les codes et si tu les as, pliz envoi le a mon adresse e-mail: tsirylal@yahoo.fr
        0
    2. Bonjour, voici ce que j'ai testé mais ca ne marche toujours pas :

      Dim bds As Database, qdf As QueryDef
      Dim re As Recordset

      'on ouvre la base de données
      Set bds = OpenDatabase("F:\micka\cours\Appli\dossier programmation\Appli\appli.mdb")
      Set re = bds.OpenRecordset("Select * From [article]")
      If re.RecordCount <> 0 Then ' Enregistrement trouvé avec le Bon Mot de Passe et le Bon Login'Accés
      MsgBox ("parfait")
      Else
      MsgBox ("erreur")
      End If

      Lorsque je veux executer, ca me dit que j'ai une erreur au niveau de :
      Set re = bds.OpenRecordset("Select * From [article]")

      Je comprends pas, c'est exactement ce que j'ai trouvé sur d'autres sites...

      Est-ce que quelqu'un voit d'ou peut venir l'erreur??
      4
      1. Salut ,il faut au prealable que ta base de donne ait un format 97
        pour cela convertissez la en cliquant sur le menu
        outil- utilitaire de base de donnee- convertir la base vers un format 97
        puis enregistrer sous un autre nom.

        D'autres part vous pouvez utilise la connexion ADO en faisant le sdeclarations suivantes

        Dim con as new adodb.connection
        Dim rs as new adodb.recordset
        dim req as string
        procedez ensuite a la connection
        con.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=chemin d'acces\nombase.mdb "
        req="select * from nomtable"
        rs.open req,con,adopenkeyset
        msgbox rs.recordcount

        Pas besion de convertir la base. je pense que ca doit marcher
        0
      2. @layemoryBonjour,

        Seriez-vous m'aidez, je souhaiterais faire un lin de Access a visual basic mais je n'y arrive pas. J'ai la version de Acces 2007 et visual basic 2008 mais rien ne fais ca ne marche pas.

        Merci de m'aider svp
        0
    3. petit détail :
      tu peux aussi écrire ta requète directement dans ton code vb
      dans cet exemple je veux que les classes d'un collège apparaissent dans une listbox et faire mon choix en cliquant sur une des classes
      Private Sub list1_Change()
      Set rs1 = db.OpenRecordset(requete1)
      'initialiser requete1
      requete1 = ""
      'emission de  la requete1
      'selectionner l'enregistrement en cours  de la table classe qui s'affichera dans la list1
      'requete1 = "select lib_classe, code_classe from CLASSECODE order by code_classe = '" + List1.Text + "'"
      requete1 = "select lib_classe from CLASSECODE  = '" + List1.Text + "'"
      'aller a l'enregistrement suivant
      rs1.MoveFirst
      
      
      Exit Sub
      


      c'est valable lorsque tu sais que tu n'utiliseras cette requète qu'une seule fois
      3
      1. il a plusieurs méthodes de connection(ADO, DAO, RDO)
        avec DAO tu ajoute d'abord la bibliothèque en cochant:
        projet----references--Microsoft data active object
        Ensuite tu place les différents controles sur lza feuille form et tu pars sous le code
        a l'évènement form_load :
        dim db as databse
        dim rs as recordset
        set db=opendatabase("chemin de la base de donnée)
        set rs=db.openrecordset("nom de la table)
        pour enregistrer
        sl="insert into nom_table values(' " & nom_controle.text & " ')"
        db.execute(sl)
        pour de plus amples informations écris moi à cette adresse
        lsetenet@yahoo.fr
        3
        1. Je recherche une personnel pour creer un logiciel de suivi des travaux dans le bâtiments en access et suivre le coût des travaux par corps de métier. Je vous remunererai pour votre temps de travail .
          Je vous en remercie d'avance
          0
        2. @maxou91Salut Maxou, pour créer une base de données tu peux prendre contact avec moi : spastore at free.fr .
          0
        3. bonjour, j fè un projet circulation doc d'une e/se sur access et j' veux excuter les commandes suivants sur vb: situation du livre(disponible ou pas), les doc que pôssède le detenteur en entrant son N°matricule,...
          merci de me repondre
          0
        4. @maxou91Si tu as besoin d'une application avec access, contacte moi par mail : r2c2@free.fr
          0
        5. si c pour connection access-vb avec dao 3.6 voici le code
          procedure: d'abord click project-references
          ajouter microsfot dao 3.6 object library.
          dans le forme load ajouter le code suivant
          dim db as database
          dim rs as recodset
          set db=dbengine.opendatabase("chemin\nomdatabase.mdb")
          set rs=db.openrecordset("nom table")
          rs.addnew
          rs!nomchamp1=text1.text(exemple)
          rs!nomchamp2=text2.text(exemple)
          rs.update
          0
      2. Pour répondre à ton message je: il faut ajouter un Data Environnement dans ton projet puis il y’aura une connexion qui te permettra de te connecter à la base de données Access de même cette connexion te permettra aussi de spécifier les données que tu veut afficher sur le DataGrid.
        2
        1. salut
          je vais essayer de vous repondre a cette question; mais avant je vous pose qlq question concernant votre besoin:
          cette conexion est ce que c'est pour lire les données de la base de donnée et aussi entrer les données a la base de données. c'est le cas alors suivere les etapes suivantes.
          ajouter a la feuille des zonne de text qui corespond aux nombre de chaps de la table

          ajouter le controle data a la feuille
          modifier les deux propriétésdatabasename:selectionner la base de donnée et recordsource=nom de la table
          pour ajouter les données ajouter une commandet ecrire le code suivant;
          data1.recordset.addnew
          data1.recordset(0)=text1.text
          ..
          ...
          ...
          data.recordset.update
          bon c'est ça votre probleme je peux vous donner plus d'information sur ce type de connexion et aussi sur l'utilisation de datagrid.
          6
          1. j'ai un probleme Mme\Mr avec la connexion base de donnes avec access ( data),
            j'ai ecrit cette code la :

            Private Sub Form_Load()
            Dim dbs As Database
            Dim rst As Recordset
            Dim wrk As Workspace
            Set wrk = CreateWorkspace("", "admin", "", dbUseJet)
            Set dbs = wrk.OpenDatabase("C:\Documents and Settings\MS SCHOCKMANN\Bureau\Total Projet vb6\soufiane.mdb", False)
            Set rst = dbs.OpenRecordset("clients", dbOpenDynaset)

            If rst.RecordCount <> 0 Then
            MsgBox "parfait"
            Else
            MsgBox "error"
            End If

            'pour charger datagrid
            Set DataGrid1.DataSource = rst

            End Sub

            mais il fonctione pas Mme\Mr ,
            error affiche

            Type mismatch

            comment doit faire Mme\Mr .
            Repondez vous moi svp mounsouf@hotmail.com , c'est urgent ,

            Merci
            0
        2. salut

          moi j'execute ce que tu as dit seulement au niveau de datasource qd je clique il me dit pilote IAM introuvable et donc je n'accede pas à ma table mais à ma base si avc databasename en suivant mon chemin d'acces.
          2
          1. bjr,je voulai savoir c'est quoi vb et ça sert à quoi.
            Merci
            1
            1. salut tout le monde mon nom c daouda et j'habite au senegal mon adresse c diouf.daouda@yahoo.fr
              0
              1. Que cherche tu exatement?
                Une maniere de demander a certaines personnes de quoi il est capable.....
                Boujour C'est Achille du Cameroun
                tu cherche tu et donne ton opignons sur certains sujets......
                0
            2. bon c'est facile
              tout d'ab:
              vous ajoutez au code ses lignes:
              Private Sub Form_Load()
              chaine = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\....\nom de votre base.mdb;Persist Security Info=False"
              Set dtBase = New ADODB.Connection
              Set rst = New ADODB.Recordset
              dtBase.Open chaine
              Me.Refresh
              End Sub
              ensuite vous faites les declarations suivantes:
              Dim dtBase As ADODB.Connection
              Dim rst As ADODB.Recordset
              Dim chaine As String
              puis vous faite les affectations que vous avez fait comme suit:
              dtBase.Execute " insert into nom_tableau (les variables déclarés dans la base) Values ( '" & var1 & "','" & var2 & "',..)
              est comme sa vous avez enserre des variables dans votre base access.
              pour récuperer des données de votre base vous pouver la parcourir par le curseur rstcomme suit:
              rst!var1 (var1 est le champ associer dans votre tableau)
              9
              1. Salut "bucher55", je vous remercie pour les explications que vous avez apporter.
                Quant à moi, j'utilise Access 2007 sur Visual Basic 2010. Et j'aimerais utilisé des données dans ma base de donné pour effectuer des opérations. Maintenant je ne sais quel travail faire dans Access et quel autre faire dans Visual Basic 2010( il s'agit en faite d'une société de commerce qui gère des clients)/ Merci d'avance.
                0
            3. bjr tt le monde;g realisé une application sous vb 3 avec une base de données sous access;g installé mn application sur 3 poste;le probleme c que je vx que les modifications apportées sur la base sur n'importe quel poste seront affchées ds la base et je sé po comment faire.svp aider moi;
              merci d'avance
              2
              1. Bonjour je suis débutant en visual basic et j'ai réalisé un formulaire en access.
                Probléme, je ne sais pas le traduire.
                J'ai une table en access commune.mdb

                et 2 requetes:
                COMMUNE_IU Requête RECHERCHE CODE:

                SELECT COMMUNE_IU.LIB_COMMUN
                FROM COMMUNE_IU
                WHERE (((COMMUNE_IU.CODE_COM)=[forms]![Interfacegraphique]![codepostal])) OR (((COMMUNE_IU.LIB_COMMUN)=[forms]![Interfacegraphique]![COMMUNEl]));

                COMMUNE_IU Requête RECHERCHE EST NORD:

                SELECT COMMUNE_IU.[EST], COMMUNE_IU.NORD
                FROM COMMUNE_IU
                WHERE LIB_COMMUN=forms!Interfacegraphique!COMMUNE;

                Est ce que quequ'un pourrait m aider svp.

                Voila le code

                Option Compare Database

                Private Sub Commande12_Click()
                On Error GoTo Err_Commande12_Click

                Dim stDocName As String

                stDocName = "COMMUNE_IU Requête RECHERCHE CODE"
                DoCmd.OpenQuery stDocName, acNormal, acEdit

                Exit_Commande12_Click:
                Exit Sub

                Err_Commande12_Click:
                MsgBox Err.Description
                Resume Exit_Commande12_Click

                End Sub
                Private Sub Commande13_Click()
                On Error GoTo Err_Commande13_Click

                Dim stDocName As String

                stDocName = "COMMUNE_IU Requête RECHERCHE CODE"
                DoCmd.OpenQuery stDocName, acNormal, acEdit

                Exit_Commande13_Click:
                Exit Sub

                Err_Commande13_Click:
                MsgBox Err.Description
                Resume Exit_Commande13_Click

                End Sub
                Private Sub Commande16_Click()
                On Error GoTo Err_Commande16_Click

                Dim stDocName As String

                stDocName = "COMMUNE_IU Requête RECHERCHE CODE"
                DoCmd.OpenQuery stDocName, acNormal, acEdit

                Exit_Commande16_Click:
                Exit Sub

                Err_Commande16_Click:
                MsgBox Err.Description
                Resume Exit_Commande16_Click

                End Sub
                Private Sub Commande19_Click()
                On Error GoTo Err_Commande19_Click

                Dim stDocName As String

                stDocName = "COMMUNE_IU Requête RECHERCHE CODE"
                DoCmd.OpenQuery stDocName, acNormal, acEdit

                Exit_Commande19_Click:
                Exit Sub

                Err_Commande19_Click:
                MsgBox Err.Description
                Resume Exit_Commande19_Click

                End Sub
                Private Sub Commande21_Click()
                On Error GoTo Err_Commande21_Click

                Dim stDocName As String

                stDocName = "COMMUNE_IU Requête PAR CODE POSTAL"
                DoCmd.OpenQuery stDocName, acNormal, acEdit

                Exit_Commande21_Click:
                Exit Sub

                Err_Commande21_Click:
                MsgBox Err.Description
                Resume Exit_Commande21_Click

                End Sub
                Private Sub Commande22_Click()
                On Error GoTo Err_Commande22_Click

                Dim stDocName As String

                stDocName = "COMMUNE_IU Requête PAR CODE POSTAL"
                DoCmd.OpenQuery stDocName, acNormal, acEdit

                Exit_Commande22_Click:
                Exit Sub

                Err_Commande22_Click:
                MsgBox Err.Description
                Resume Exit_Commande22_Click

                End Sub
                Private Sub Commande28_Click()
                On Error GoTo Err_Commande28_Click

                Dim stDocName As String

                stDocName = "COMMUNE_IU Requête PAR CODE POSTAL"
                DoCmd.OpenQuery stDocName, acNormal, acEdit

                Exit_Commande28_Click:
                Exit Sub

                Err_Commande28_Click:
                MsgBox Err.Description
                Resume Exit_Commande28_Click

                End Sub
                Private Sub Commande31_Click()
                On Error GoTo Err_Commande31_Click

                Dim stDocName As String

                stDocName = "COMMUNE_IU Requête RECHERCHE EST NORD"
                DoCmd.OpenQuery stDocName, acNormal, acEdit

                Exit_Commande31_Click:
                Exit Sub

                Err_Commande31_Click:
                MsgBox Err.Description
                Resume Exit_Commande31_Click

                End Sub
                1
                1. 1-LES MSG +ERR+EXIT sont la pour etre executes en cas de bug a l'execution; au lieu ke programme plante tu aura pluto un Msg Box(boite) ki sera deploye
                  -2les select appartienent au lanagage sql ke tu doit chercher a apprendre si tu veut comprendre les base de donnee)
                  3-les requete ou recherche sont execute sur des forms(formulaire) ressemblant un peu a une interface graphique organise
                  4le details des parametrestes acnormal, acedit sont explique si tu tape"open_quey" dans la boite de recherche de l'aide(alt+F11/& F1 );
                  DTD
                  0
                2. s'il vous plaît j'ai du mal avec mon projet, ben voila je travaille sur vb.NET, et je ne connais plus les étapes pour faire une connexion avec ma base de données sur Access merci de me répondre sur ma boîte e-mails dans les plus proches délais: fadhoul3000@hotmail.com
                  Merci d'avance
                  0
                3. chercher sur mon amie www.google.com ou .fr lol et vous trouverez surrement plus precisement ce que vous chercher sur http://www.developpez.com/
                  bon courage
                  0
              2. je veux faire un projet de gestion d'ecole sur vb et access ;je sollicite donc des orientations de votre part;s'il faut être clair des idées(nbre de feuilles,composants et autres...)
                1
                1. tu v gere ql genre d' ecole (lycée,.....)
                  0
              3. Bonjour,

                Je dois réaliser une application Visual Basic qui utilise une base de donnée Access. J'ai cherché sur internet comment se connecter à Access sous Visual Basic et comment récupérer le résultat de requêtes mais je n'ai réussi à rien faire, même pas à me connecter à Access.

                Est-ce que certains ont déjà fait cela? Si oui est-ce que vous auriez des liens ou alors est-ce que vous pourriez me montrer comment on se connecte et on effectue une requete en récupérant les résultat??

                Merci d'avance ;)69 message(s) posté(s) depuis le vendredi 2 juillet 2004
                3
                1. bonjour,

                  Pas mal le copier/coller ... es-tu sûr d'avoir pris la peine de lire ce qu'il y a sur ce topic ?

                  ;o)
                  0
                2. @Polux31Bonjour Polux31,
                  je cherche à controler la redondance dans mes tables access à partir de Visual basic,
                  je le fais par nom comme index de la table, mais il ya plusieurs personnes de meme nom.
                  comment prendre en compte tous les champs de la table dans l'evaluation de la redondance ?
                  Merci d'avance
                  0
              4. ecoute essaye de m'envoyer ton num de gsm dans ma boite email et jte dirai coment il faut faire
                1
                1. comment je fais en detail svp)
                  pour se connecter a une base de données acess a partir d'une interface graphique devlopée sur vb6
                  je veux encore avoir le code source pour afficher des images gif,jpeg dans une base de données apartir d'un fichier al' exterieur de ma base
                  est ce que je dois ouvrir la conection vers la base achaque fois que je viens de consulter,modifier... ma base de données
                  2
                  • 1
                  • 2