Combobox

Résolu
rudybiss Messages postés 60 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 20 juillet 2009 - 2 juin 2009 à 14:47
rudybiss Messages postés 60 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 20 juillet 2009 - 3 juin 2009 à 15:13
Bonjour à tous!
Je développe une application et je rencontre quelques petites difficultés.Voila j'ai deux tables conseiller (code_conseiller,nom,prenom) et programme(code_programme,code_conseiller,libelle programme).Dans le formulaire de programme j'ai un combobox qui me permet de sélectionner le code conseiller.Alors j'aimerai qu'à la selection du code conseiller,qu'il m'affiche le nom correspondant au code.Alors j'ai fais ceci:
dans le module j'ai mis ceci:

Option Explicit On
Module select_nom_cons

    Public WasDelete As Boolean

    Public Function Selection(ByVal cmb_cod_cons As ComboBox) As String
        Selection = RTrim(cmb_cod_cons.SelectedValue)
    End Function
    Public Sub Tri(ByVal cmb_cod_cons As ComboBox)

        Dim iStart As Integer
        Dim iSense As String

        iStart = cmb_cod_cons.SelectionStart
        iSense = Selection(cmb_cod_cons)
        If iSense <> "" And Not WasDelete Then
            cmb_cod_cons.Text = iSense
            cmb_cod_cons.SelectionStart = iStart
            cmb_cod_cons.SelectionLength = Len(cmb_cod_cons.Text) - iStart
        End If

    End Sub
    Public Sub PressClavier(ByVal cmb_cod_cons As ComboBox, ByVal KeyAscii As Integer)

        If KeyAscii = 13 And cmb_cod_cons.Text <> "" Then
            Selection(cmb_cod_cons)
        ElseIf KeyAscii = 8 Then
            WasDelete = True
        Else
            WasDelete = False
        End If

    End Sub

End Module

et dans le combobox j'ai mis ceci:

Private Sub cmb_cod_cons_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_cod_cons.SelectedIndexChanged
        Tri(cmb_cod_cons)
        'definition de notre table
        Dim Matable As DataTable
        Matable = DtSet.Tables("conseiller")

        'cree un objet dataview pour filtrer les enregistrements
        Dim filtre1 As New DataView(Matable)

        'filtre selon le matricule de l'employé
        filtre1.RowFilter = "Code_conseiller like'*" & cmb_cod_cons.SelectedValue & "*'"

        'affiche les valeurs
        lbl_nom_cons.Text = filtre1.Item(0)(4)
      
    End Sub

Au chargement du formulaire programme,j'ai cette erreur:

La conversion du type 'DataRowView' en type 'String' n'est pas valide . et il me souligne cette ligne dans le module: Selection = RTrim(cmb_cod_cons.SelectedValue)

Alors j'aimerai savoir où est ce que j'ai commis l'erreur?Je suis dessus depuis le matin et ça commence à me donner de la migraine.

Merci pour votre aide.

4 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
3 juin 2009 à 13:36
Je voulais plutot dire cela :

Public Function Selection(ByVal cmb_cod_cons As ComboBox) As String
        Return cmb_cod_cons.SelectedValue.ToString()
End Function

ou encore

Public Function Selection(ByVal cmb_cod_cons As ComboBox) As String
        Return cmb_cod_cons.SelectedItem.ToString()
End Function

@+ Mayzz.

                                                                                                                                        
Si le déboguage est l'art d'enlever les bogue
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
2 juin 2009 à 19:22
Bonjour,

Le problème vien du fait que les valeurs de ton combo sont des DataRow (des objet Row, donc des lignes de table complète) et que ce type ne peut être convertis en String, vérifie les la propriété ValueMember de ton ComboBox, elle doit correspondre à un nom de colonne. Aussi fais la conversion en String de la valeur du ComboBox cmb_cod_cons.SelectedValue.ToString

@+ Mayzz

                                                                                                                                        
Si le déboguage est l'art d'enlever les bogue
0
rudybiss Messages postés 60 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 20 juillet 2009
3 juin 2009 à 09:58
Re!
Le problème reste le même malgré la ligne de code que j'ai rajouté dans mon code.Je te montre comment je déclare ma combobox:

        'on rempli le dataset pour le combobox
        AdapTcodeconseiller.Fill(DtSet, "conseiller")

        'remplissage du combobox avec le dataset
        Dim Matable1 As DataTable
        Matable1 = DtSet.Tables("conseiller")
        cmb_cod_cons.DataSource = Matable1
        cmb_cod_cons.DisplayMember = "Code_conseiller" 'Nom de la colonne de table que tu veux afficher dans le combo
        cmb_cod_cons.ValueMember = "Code_conseiller" 'Valeur de l'élément SelectedValue (Utiliser pour retourner les ID lors de la sélection d'un membre par ex.)
        cmb_cod_cons.SelectedValue.ToString()

Alors dis moi,il n'y a t-il pas un autre moyen ou méthode pour réaliser ce que je veux faire?

P/S:A titre d'information,j'utilise access et Code_conseiller est de type "texte"

Merci.
0
rudybiss Messages postés 60 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 20 juillet 2009
3 juin 2009 à 15:13
Salut!
Merci pour ton aide.c'est mieux en ce moment.J'aimerai aussi te demander une chose si cela ne te gène pas.En effet j'aimerai comparer deux textbox qui ont des valeurs numériques,donc je fais ceci:

If (IsNumeric(txt_montant.Text) > IsNumeric(txt_montant_allot.Text)) Then
            MsgBox("Le montant du stickers est supérieur à celui de son allotment", MsgBoxStyle.Information, "Vérification des montants")
End if

Mais il ne fais rien!Alors je me demande que dois faire pour qu'il fasse la vérification?
Merci d'avance!
0
Rejoignez-nous