Requete sql en vb vers une BdD access

Amandine -  
 Amandine -
Bonjour,

je suis débutante en vb, mon probleme est le suivant,
j'ai une base de donnees Access qui s'appelle "Base1.mdb" elle se trouve dans "C:\bourse"
et sur excel j'ai un userform en vb qui contient 4 textbox : "textbox1" à "textbox4" vide par defaut et j'ai un bouton exécuter auquel je veux associer une requte sql de type :
select textbox1, textbox2, textbox3 from table1 where textbox4 = '100' par exemple

pourrier-vous svp m'aider a associer la requete au bouton (Bouton1)

merci
Configuration: Windows XP
Internet Explorer 7.0

15 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Tu veux dire que tu veux importer les données de ta base de données pour les afficher dans les textbox ?

    polux
    0
  2. Amandine
     
    Bpnjour,

    oui c'est ça polux;
    la reponse de ma requete est une ligne donc une variable par colonne et ces variables la que je veux recuperer et les mettre dans les textbox
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    re,
    je regarde ça et je te donne la réponse demain, j'ai quelque chose la dessus

    ;o)
    polux
    0
    1. Amandine
       
      ok
      je te remercie bcp
      a demain ;-)
      0
  4. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Voilà un exemple, à toi de changer les différents nom de champs
    Sub importDonneesAccess()
        'Nécessite d 'activer les références: Outils -> Références...
        'Microsoft ActiveX Data Objects x.x Library
        'et
        'Microsoft ADO Ext. x.x for DDL and Security
    
        Dim Db As DAO.Database
        Dim Rs As DAO.Recordset
        Dim strSQL As String
         
        Set Db = DAO.OpenDatabase("C:\bourse\Base1.mdb", False, False)
        strSQL = "SELECT champ1, champ2, champ3, champ4</ita> FROM <ital>[Table1] _
                      WHERE champ4 = 100"
        Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
        
        UserForm1.TextBox1 = Rs.Fields("champ1")
        UserForm1.TextBox2 = Rs.Fields("champ2")
        UserForm1.TextBox3 = Rs.Fields("champ3")
        UserForm1.TextBox4 = Rs.Fields("champ4")
         
        Db.Close
    End Sub

    Bonne courage pour la suite

    ;o)

    polux
    0
    1. Amandine
       
      Bonjour Polux,

      merci pour ta reponse
      j'ai repris ton code et je l'ai modifié mais malheureusement il fonctionne pas

      voila ce que j'ai mis

      Private Sub btValiderAction_Click()
       
          'Nécessite d 'activer les références: Outils -> Références...
          'Microsoft ActiveX Data Objects x.x Library
          'et
          'Microsoft ADO Ext. x.x for DDL and Security
      
          Dim Db As DAO.Database
          Dim Rs As DAO.Recordset
          Dim strSQL As String
          
          ISIN = TxISINAction.Text
          Set Db = DAO.OpenDatabase("C:\bourse\base1.mdb", False, False)
          strSQL = "select isin, nom_societe, secteur, site_web from T_SECTEURS, T_SOCIETES where SECTEURS.CODE_SECTEUR = T_SOCIETES.CODE_SECTEUR AND T_SOCIETES.ISIN = " & ISIN
          
          
          Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
          
          USFRM.TxISINCours = Rs.Fields("ISIN")
          USFRM.TxNomCours = Rs.Fields("NOM_SOCIETE")
          USFRM.TxSecteurCours = Rs.Fields("SECTEUR")
          USFRM.TxSiteCours = Rs.Fields("SITE_WEB")
           
          Db.Close
      
      End Sub


      mais il bloque a la ligne
      Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)


      merci encore une fois pour ton aide
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Polux31 Messages postés 7219 Statut Membre 1 204
     
    As-tu bien fait ça :
    'Nécessite d 'activer les références: Outils -> Références...
    'Microsoft ActiveX Data Objects x.x Library
    'et
    'Microsoft ADO Ext. x.x for DDL and Security
    0
    1. Amandine
       
      oui
      0
    2. Amandine
       
      c bon j'ai réglé le probleme
      en fait j'ai fait une erreur dans la requete ton code etait bon

      merci bcp Polux


      autre chose : le probleme est résolu mais je sais pas comment l'indiquer sur le topic :)
      0
  7. Polux31 Messages postés 7219 Statut Membre 1 204
     
    de quel type est ISIN ?
    si c'est un numérique il faut faire :
    ISIN = Clng(TxISINAction.Text)

    Si c'est de l'apha il faut faire dans ta requête (il y avait aussi une erreur sur le nom d'une table):
    strSQL = "select isin, nom_societe, secteur, site_web _
    from T_SECTEURS, T_SOCIETES where T_SECTEURS.CODE_SECTEUR = T_SOCIETES.CODE_SECTEUR AND T_SOCIETES.ISIN = ' " & ISIN & " ' "

    Les champs extrait sont-ils dans la même table ?
    Vérifie également quel est le type de champ ISIN ...

    ;o)

    polux
    0
  8. Polux31 Messages postés 7219 Statut Membre 1 204
     
    ok tant mieux alors :o))

    Tu dois avoir en haut du topic le bouton pour mettre "résolu"
    0
  9. Amandine
     
    le code ISIN il est de Type : FR0000031122

    pour le case "resolu" je la trouve peut etre parce que je suis pas inscrite
    0
  10. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Pas grave

    Bonne continuation,

    ;o)

    polux
    0
  11. Amandine
     
    j'ai encore un tit probleme
    si je rentre un code ISIN que j'ai deja dans ma base tout fonctionne bien mais si je rentre un code non existant ça bloque dans le code a la ligne

    USFRM.TxISINCours = Rs.Fields("ISIN")
    0
  12. Polux31 Messages postés 7219 Statut Membre 1 204
     
    ben oui, puisque ton recordset est vide ... il faut faire un test avant d'afficher, du genre :
    If IsNull(Rs.Fields(0)) Then
        MsgBox "blablabla",vbexclamation,"Erreur base de données"
        Exit Sub
    End if


    ;o)

    polux
    0
  13. Amandine
     
    salut
    merci polux encore une fois pour ton aide

    en fait j'ai integré ton code dans ce que j'avais avant mais ca marche pas

    voici le bout de code
            Set Db = DAO.OpenDatabase("C:\bourso\BdD_Actions.mdb", False, False)
            strSQL = "select isin, nom_societe, secteur, site_web from T_secteurs, T_societes where T_SECTEURS.CODE_SECTEUR = T_SOCIETES.CODE_SECTEUR AND T_SOCIETES.ISIN = '" & ISIN & "'"
            Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
            
            'verification que le code ISIN entré figure bien dans la base de donnée
            
            If IsNull(Rs.Fields(0)) Then
                 msgbox "Code ISIN non valide", vbExclamation, "Erreur base de données"
             Exit Sub
            
            End If
            
            UFESCA1.TxISINCours = Rs.Fields("ISIN")
            UFESCA1.TxNomCours = Rs.Fields("NOM_SOCIETE")
            UFESCA1.TxSecteurCours = Rs.Fields("SECTEUR")
            UFESCA1.lbRsiteCours = Rs.Fields("SITE_WEB")
            


    si je rentre un ISIN qui n'existe pas ça bloque dans la ligne

    UFESCA1.TxISINCours = Rs.Fields("ISIN")
    0
  14. Polux31 Messages postés 7219 Statut Membre 1 204
     
    re,

    Essaies avec ça, je n'ai pas testé et je ne suis plus tout à fait sur de la syntaxe:
            UFESCA1.TxISINCours = Rs.Fields(0)
            UFESCA1.TxNomCours = Rs.Fields(1)
            UFESCA1.TxSecteurCours = Rs.Fields(2)
            UFESCA1.lbRsiteCours = Rs.Fields(3)
    
    0
  15. Amandine
     
    ok je vais essayer (je ne l'ai pas encore fait :) )

    je te tiens au courant du résultat

    merci encore un fois polux
    0