VB.Net Entrer le l'info dans un Combobox

Résolu
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 - 17 sept. 2009 à 20:58
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 18 sept. 2009 à 23:39
Bonjour à tous...

Je sais que ma question va sembler facile pour plusieurs personnes mais je n'y arrive pas...

J'ai deux combobox. Mon premier combobox contiendra les valeurs de mon deuxième combobox sans doublon.


Donc j'ai fait un code qui ressemble a cela... Mais je suis incapable d'ajouter des valeurs dans mon premier combobox. Des valeurs sont entrer dans mon deuxième combobox à partir d'un requête SQL.


Mond Deuxième combobox à ces valeurs
Auto
Auto
Auto
Bateau

Donc dans mon Premier combobox je veux voir que:
Auto
Bateau


J'ai toujours un erreur me disant que c'est impossible

For i = 0 To CopieCbxCirconscription.Items.Count - 1

If cbxCirconscription.Items.Contains(cbxCirconscription.Text) Then
'à compléter plus tard
Else

cbxCirconscription.Items.Add(CopieCbxCirconscription.Items.Item(i))

End If
Next


Merci de votre aide

6 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 sept. 2009 à 23:39
Dim ConString As String = "Ta chaîne de connexion"
tu veux dire quoi par cela ???


Heu... Comment dire, ne pas connaitre les chaînes de connexion et travailler avec les données, c'est comme faire du pain sans savoir ce qu'est de la farine, :)

Je te conseille, vivement un petit tour sur ce site géniale ou tu y trouveras les rudiments des connexion aux données via ADO.Net. =>> http://plasserre.developpez.com/cours/vb-net/?page=bases-donnees1

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
17 sept. 2009 à 23:45
Salut,

Pourquoi ne pas faire :
For i As Integer = 0 To CopieCbxCirconscription.Items.Count - 1 
  If Not cbxCirconscription.Items.Contains(CopieCbxCirconscription.Items.Item(i)) Then 
    cbxCirconscription.Items.Add(CopieCbxCirconscription.Items.Item(i)) 
  End If
Next i


Juste une question : pourquoi ce system de deux combo ? En as-tu besoin par la suite ou est-ce pour avoir la liste avec éléments uniques ?
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 sept. 2009 à 00:32
Salut,

A mon avis tu devrais gérer cela par code, faire une requête SQL qui va trier les éléments de ta requêtes pour les ajouter à Ton combo.

Ex :

    Private Sub FillcbxCirconscription()
      
        cbxCirconscription.Items.Clear
 
        Dim ConString As String = "Ta chaîne de connexion"
        Dim SqlConnex As New SqlClient.SqlConnection(ConString)

        Try
            SqlConnex.Open()
            'Ici ta requête qui va récupérer les valeurs de la colonnne de ta table.
            'On va appler celui-ci "Type", c'est ton fameux champ contenant Auto, Bateau etc...    
            Dim QueryString As String = "SELECT Type FROM MaTable"
            'Instancie un TableAdapter
            Dim Adapter As New SqlClient.SqlDataAdapter(QueryString, SqlConnex)
            'Instancie une DataTable
            Dim Table As New DataTable
            'Rempli la Table
            Adapter.Fill(Table)

            For Each Row As DataRow In Table.Rows
                'Ici le même principe que vu plus haut, sauf qu'avec ce code il n'est pas nécéssaire d'avoir 2 combos.
                'Attention, ici dans Row!Type.ToString "Type" est le nom du champ de ta table, il te faudra le remplacer.  
                If Not cbxCirconscription.Items.Contains(Row!Type.ToString) Then
                    cbxCirconscription.Items.Add(Row!Type.ToString)
                End If
            Next

        Catch ex As SqlClient.SqlException
            MessageBox.Show(ex.Message, "Erreur de transact SQL", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
18 sept. 2009 à 01:12
Voilà, par exemple

Ou bien, toujours dans le cas ou la base de données est fournit par SQLServer car System.Data.SQLClient est dédié à SQLServer je crois :

Private Sub FillcbxCirconscription()
  cbxCirconscription.Items.Clear
  Dim ConString As String = "Ta chaîne de connexion"
  Dim SqlConnex As New SqlClient.SqlConnection(ConString)
  Try
    SqlConnex.Open()
    'Ici ta requête qui va récupérer les valeurs uniques de la colonnne de ta table.
    'On va appeler celui-ci "Type", c'est ton fameux champ contenant Auto, Bateau etc...    
    Dim QueryString As String = "SELECT DISTINCT Type FROM MaTable"
    'Instancie un SQLCommand
    Dim Command As New SqlClient.SqlCommand(QueryString, SqlConnex)
    'Création d'un DataReader
    Dim DataReader As SqlClient.SqlDataReader = Command.ExecuteReader()
    'Rempli le combo
    While DataReader.Read()
      cbxCirconscription.Items.Add(DataReader.Item("Type").ToString())
    End While
    DataReader.Close()
    Command.Dispose()
  Catch ex As SqlClient.SqlException
    MessageBox.Show(ex.Message, "Erreur de transact SQL", MessageBoxButtons.OK, MessageBoxIcon.Error)
  Finally
    SqlConnex.Close()
  End Try
End Sub
0

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

Posez votre question
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 sept. 2009 à 12:36
Oui, le DataReader, en effet , beaucoup plus adéquate ici


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
18 sept. 2009 à 13:44
Bonjour à vous deux...

Ayr : Je suis avec ADO.Net et mon fichier est un fichier Access...

J'ai essayé quelque truc mais je n'y arrive pas...

et...

Dim ConString As String = "Ta chaîne de connexion"
tu veux dire quoi par cela ???

merci
0
Rejoignez-nous