Petit problême de combo

Résolu
Thaelveen Messages postés 6 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 28 janvier 2009 - 13 janv. 2009 à 07:02
Thaelveen Messages postés 6 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 28 janvier 2009 - 28 janv. 2009 à 09:33
Bonjour a toutes et tous,

je débute dans le dévellopement et je me rtrouve confronter à une problême que je n'aipas encore résolue et donc je vous l'expose pour savoir sivous pourriez m'aider, et le problême le voici :

Dans une formulaire de gestion de devis, je dois faire en sorte que quand je choisi un numéro dans ma combobox dans une texte boss placé en face de celle ci s'affiche le texte s'y rapportant et pour cela on me demande d'aller chercher ce texte dans la base de donnée en ayant recours a une requête SQL seulement voila je n'ai pas encore appris a faire sa donc pour le moment je tergiverse un peu sur le Code et donc voila ce que sa a donné :

Private Sub Combo36_Click()
    Dim Db As Database
    Dim strCombo36 As String
    Dim oRst As Recordset
    Dim strSQL As String
    Set Db = CurrentDb
   
    strCombo36 = "='" & Me.Combo36.Value & "' "
    strSQL = "SELECT type_objet_texte FROM Combo_type_objet " & _
         "WHERE Type_objet=" & strCombo36
        
   
    Set oRst = Db.OpenRecordset(strSQL)
   


End Sub

Je n'arrive pas vraiment a définir un vrai recordset, ni d'ailleurs en utilisé...mais, ce qu'on peut dire c'est qu'on es connecté directement a la BDD et que donc pas besoin d'ouvrir une connection ODBC enfin voila si on peut me conseiller j'accepte volontier  

Merci d'avance pour vos réponses ! Bye !

9 réponses

skyla Messages postés 60 Date d'inscription samedi 17 juin 2006 Statut Membre Dernière intervention 19 octobre 2009
14 janv. 2009 à 12:02
Salut,
Lorsque tu execute une requette,ta variable MaTable te ramène ou non un résultat,qui est sous forme d'un tableau.Il te faudra parcourir ce tableau afin de pouvoir afficher ces resultat la ou tu souhaite.C'est cela que Renfield t'a proposer dans son code,mais apparement tu ne l'as pas appliqué dans ton poste.Ta requette te ramene normalement une seule ligne de resultat donc pas de boucle de parcours.



strSQL = "Select type_objet_texte From dbo.Combo_type_objet Where Type_objet=" & Combo36.value


Set MaTable= Db.OpenRecordset(strSQL)    'Db Execute la requete et ramene le resultat de strSQLdansMaTable
If Not MaTable.EOF Then                
'Si on a un résultat (EOF=End Of File=Fin de Fichier)
 Text36.Value = MaTable.Fields("type_objet_texte").Value 'Dans MaTable,la valeur du champ type_objet_texte
End If
'Afficher dans Text36 la valeur du champ type_objet_texte correspondant a cette ligne de resultat
'Il faut obligatoirement que tu Telecharge des cours de SQL pour comprendre la syntaxe et surtout comment
'te sont ramener les resultat d'une requette afin de les exploiter.je te conseille le site de
'developpez.com ou tu trouvera de bon tutoriels pour SQL et Access.
Metnant au boulot!!

[mailto:Sk@yL S]
3
Thaelveen Messages postés 6 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 28 janvier 2009
28 janv. 2009 à 09:33
Bonjour a toutes et tous,

Voila j'ai résolu le problême de connection à la base de données, et donc sa marche nikel je vous remercie pour le coup de main et je laisse une partie du code pour les combos pour nos amis qui chercherons des réponses :

'Déclaration des variables :
       
            Dim strSQL As String
            Dim rst As dao.Recordset
            Dim Db As dao.Database
           
        'Ouverture de la base de donnée :
            Set Db = DBEngine.OpenDatabase("NomDB", Options, ReadOnly, "ODBC;")
           
        ' Création d'un requête SQL en mode Texte, qui sélectionne Le chptbl2 dont le numéro est sélectionner dans la combo :
       
                strSQL = "Select chptbl2 From Nomtbl Where Chptbl1= " & NomCombo.Value
           
        'Ouverture du Recorset :
       
            Set rst = Db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly)
           
            If Not rst.EOF Then
                Nomtextbox.Value = rst.Fields("chptbl2").Value
            End If

Voila pour vous, si quelqu'un ne comprends pas vraimrnt le code qu'il m'envoie un message privée je lui répondrais le plus rapidement que possible bye
3
skyla Messages postés 60 Date d'inscription samedi 17 juin 2006 Statut Membre Dernière intervention 19 octobre 2009
13 janv. 2009 à 07:46
Salut,
A lire ton code ca vas pas etre du gateau.Mais j'ai plusieur remarques
    Dim Db As Database          '  Tu declare Db sans jamais l'utiliser
    Dim strCombo36 As String      ' La seule variable utilisé
    Dim oRst As Recordset         'la aussi ok
    Dim strSQL As String         
    Set Db = CurrentDb            '??? Tu programme en quoi?? VB6 ou ACCESS
   
    strCombo36 = "='" & Me.Combo36.Value & "' "       ' un = de trop
    strSQL = "SELECT type_objet_texte FROM Combo_type_objet " & _
         "WHERE Type_objet=" & strCombo36           ' = deja present dans
strCombo36


        
   
    Set oRst = Db.OpenRecordset(strSQL)       ' tu ouvre ta requette

End Sub    ' Pourqoui finis.Comment tu recupere tes enregsitrements

Il faut que tu sois plus explicite si tu veux qu'on t'aide.Quelles connaissances as t-u deja acquis.tu programme en quoi?vu ton currentdb je pense que tu es en vba et la bemol,trompé de theme,le premier admin qui passe ce matin n'aura pas le temp de boire du café,lol
Ce que tu demande est tres simple a mettre en place,que ce soit en vb6 ou du vba,mais il faut vraiment que tu t'eclaircisse.
[mailto:Sk@yL S]
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 janv. 2009 à 08:03
Renomme tes contrôles... Combo36 c'est pas parlant.
une bonne habitude à prendre.

ta chaine SQL comporte deux signes égal == ça n'est pas normal...

tu est presque parvenu a tes fins, suffirait vraisemblablement d'ajouter :

If Not oRst.EOF Then
Text36.Value = oRst.Fields("type_objet_texte").Value
'# syntaxe équivalente mais non conseillée:
'# Text36.Value = oRst!type_objet_texte
End If
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 janv. 2009 à 08:06
désolé skyla...

arrivant de bon matin au boulot, avec mon café^^ j'ai ouvert un tas de topics et j'avais pas ta réponse sous les yeux, donc.

(theme changé)
0
Thaelveen Messages postés 6 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 28 janvier 2009
13 janv. 2009 à 11:03
Oui désolé de ne pas avoir préciser je programe en vba , avec SQL server comme BDD, et pour répondre au niveau de mes connaissances, j'ai programmer qu'en vb6 bien que vba soit pas très différent de vb6, j'ai dû quand même me prendre le gros bouquin d'accès 2003 pour trouver mes réponses et j'avoue que ce bouquins c'étais plus une bible qu'un guide
Et donc tout cela pour dire que je suis un débutant de chez débutant !
0
Thaelveen Messages postés 6 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 28 janvier 2009
14 janv. 2009 à 06:52
Bonjour, j'ai toujours pas trouvé comment faire de mon coté, et bon c'est la sécherèsse total de matière grise ! Si vous avez des astuces ou des cours qui pourrait m'aider à bien apprendre a créer un recordset je suis preneur ! Je suis prêt pour le Brainstorming !
0
Thaelveen Messages postés 6 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 28 janvier 2009
14 janv. 2009 à 08:56
Rebonjour,  donc j'ai réecrit le code avec quelque truc en plus mais bon cette fois sa me dis : Object Variable or With Block variable
Not set. Je comprends pas vraiment ce qu'il me demande ici....Noob time....

Voici le code : 

 
Private Sub Combo36_Click()
   
    'Déclaration des variables :
   
        Dim strSQL As String
        Dim db As dao.Database
        Dim MaTable As dao.Recordset
        Dim Box As String
       
    'Ouverture de la base de donnée :
   
        Set db = CurrentDb
       
    ' Création d'un requête SQL en mode Texte, qui sélectionne Le type objet texte dont le numéro est sélectionner dans la combo36 :
   
        strSQL = "Select type_objet_texte From dbo.Combo_type_objet Where Type_objet=" & Combo36
       
    'Ouverture du Recorset :
   
        Set MaTable = db.OpenRecordset(strSQL)
   
    'Ouvre une messagebox contenant les résultats :
   
        Box = MsgBox("Le risque est :" & "strSQL", vbExclamation + vbOKCancel)
   
End Sub

Je vois pas ou es le problême mais bon c'est surement parce que je suis un débutant lol, donc si on peut me guider sur ce qui manque je vous en serai reconnaissant merci !
0
Thaelveen Messages postés 6 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 28 janvier 2009
15 janv. 2009 à 08:37
Ok merci pour la réponse, mais il me reste encore un léger problême :

Private Sub Combo36_Click()
   
    'Déclaration des variables :
   
        Dim strSQL As String
        Dim db As dao.Database
        Dim MaTable As dao.Recordset
       
    'Ouverture de la base de donnée :
   
        Set db = CurrentDb()
       
    ' Création d'un requête SQL en mode Texte, qui sélectionne Le type objet texte dont le numéro est sélectionner dans la combo36 :
   
        strSQL = "Select type_objet_texte From dbo.Combo_type_objet Where Type_objet=" & Combo36.Value
       
    'Ouverture du Recorset :
    'sa bloque a ce niveau du code :
       Set MaTable = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly)
       
        If Not MaTable.EOF Then
            Text59.Value = MaTable.Fields("type_objet_texte").Value
        End If
   
End Sub

Donc quand je clique dans ma combo, sa me dis : " Object variable  or With Block Variable Not set" ?!!!

La, je saisi pas du tout ce qu'il me demande !

Et pour info je suis déja passer sur  dévellopez.com pour prendre des tutos mais sa n'empêche que je reste quand même dans le flou des fois
0
Rejoignez-nous