IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.Net]Comment remplir un combobox à l'aide d'une requête ?


Sujet :

Windows Forms

  1. #1
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut [VB.Net]Comment remplir un combobox à l'aide d'une requête ?
    Salut

    Je viens de commencer VB.Net. Je désire remplir une combobox avec les données d'une requête. Je dois afficher dans la combo les prénoms mais en fait c'est l'id qui doit être la valeur. Mais je suis bloqué. Voici mon code. Si vous pouvez m'aider à le terminer ça me ferait plaisir car ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'appel de la procédure de connection au serveur
    'son code se trouve dans un module
            connex()
            Dim MyCommand As SqlCommand = New SqlCommand("SELECT * FROM chercheurs ORDER BY prenom", cnx)
     
            Dim MyReader As SqlDataReader = MyCommand.ExecuteReader
     
            With Cbo_User
     
                .ValueMember = MyReader.GetInt32(0)
                .DisplayMember = MyReader.GetString(2)
     
     
            End With
    Merci d'avance pour vos apports
    N'oubliez pas le tag et

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bonjour callo
    Citation Envoyé par La règle du forum
    Utilisation des tags:
    Afin de faciliter la recherche et la navigation sur ce forum, nous avons mis en place un système de tags (Mots clés entre crochets dans les titres des messages). Ces tags ont pour but de déterminer de manière immédiate le langage en question : ...
    voir > http://www.developpez.net/forums/viewtopic.php?t=326088
    Soyez rigoureux quant aux respects des règles du forum, elles vous garantissent également les réponses les plus appropriées à résoudre votre souci, tout en veillant à ne pas incommoder inutilement les professionnels qui donnent benevolement de leur compétence à vous répondre. Veillez à vous mettre en règle en éditant votre post afin de modifier votre titre en conséquence. Je vous remercie de votre attention à maintenir le forum agréable et efficace.
    (Bouton en haut à droite du premier post de ce thread)
    Cordialement
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre habitué Avatar de del-dongo
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Points : 183
    Points
    183
    Par défaut
    Procède ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM chercheurs ORDER BY prenom", cnx);
    DataTable dt = new DataTable();
    sda.Fill(dt);
    Cbo_User.DataSource = dt;
    Cbo_User.DisplayMember = "user_firstName";
    Cbo_User.ValueMember = "user_id";

  4. #4
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Merci à vous deux neguib et del-dongo. ça marche. Mais si je veux utiliser le sqldatareader comment dois-je m'y prendre ?
    N'oubliez pas le tag et

  5. #5
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Salut,
    Ceci est une petite fonction que j'ai écris pour mes besoins. Elle retourne un array d'object, que tu peux utiliser pour remplir ta combo en utilisant la methode AddRange.
    La fonction utilise un DataReader. Tu lui passes en arguments ta chaine SQL, un booleen ValueMember qui détermine si tu as un ValueMember et un DisplayMember ou seulement un DisplayMember, un booleen BlankRow qui determine si tu rajoutes une ligne vide a la fin de la liste (pratique pour ne rien selectionner dans la combo) et enfin le type de requete (stored procedure, text...). Petite précision, dans ta requete, le champ que tu veux utiliser en DisplayMember doit etre en premier et le champ a utiliser en ValueMember doit etre en second.
    Tu peux la modifier, ou t'en inspirer pour tes propres besoins.
    @+

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
      Public Function GetData(ByVal SQL As String, ByVal ValueField As Boolean, ByVal BlankRow As Boolean, Optional ByVal Type As SQLType = SQLType.StoredProcedure) As Object()
                'ValueField - set TRUE if a value field is required
                'BlankRow - set TRUE if want a blank row at the start of the object array
     
                'Returns an array of objects containing the SQL data
                'Uses a SQLDataReader for speed
                Try
                    Dim returnData() As Object
                    Dim count As Integer = 0
     
                   'm_cmd est de type SqlCommand, c'est un membre privé de 
                   'ma classe. tu dois le changer en variable local si tu veux l'utiliser
                    With m_cmd
                        .CommandText = SQL
                        .Connection = m_con
                    End With
     
                    m_cmd.CommandType = GetSQLType(Type)
     
                    Dim myReader As SqlDataReader = m_cmd.ExecuteReader()
                    'Display is the first field 
                    'Value is the second field 
     
                    If myReader.HasRows Then
     
                        If BlankRow Then
                            ReDim Preserve returnData(count)
                            Dim EmptyRow As New DataRecord
                            EmptyRow.Display = ""
                            returnData(count) = EmptyRow
                            count += 1
                        End If
     
                        Do While myReader.Read()
                            ReDim Preserve returnData(count)
                            Dim currentData As New DataRecord
     
                            currentData.Display = myReader.GetValue(0).ToString
     
                            If ValueField Then
                                currentData.Value = myReader.GetValue(1)
                            End If
     
                            returnData(count) = currentData
                            count += 1
                        Loop
                    End If
                    myReader.Close()
     
                    Return returnData
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
     End Function

  6. #6
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    graphicsxp, merci pour le tuyau. Mais encore une petite question . Comment obtient-on le recordcount d'une requête de sélection en VB.Net ?
    N'oubliez pas le tag et

  7. #7
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Comme tu peux le voir dans mon code, j'utilise un SQLDataReader et le count se fait à la main (variable Count).

    Mais normalement si tu veux savoir combien tu as récupéré d'enregistrements tu fais simplement tonDataTable.rows.Count() ou sinon tu peux aussi le récupérer depuis ta requete en utilisant SELECT COUNT...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment remplir un dbcombo à l'aide d'une base donnée ?
    Par eclectik dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/09/2006, 15h50
  2. Réponses: 6
    Dernier message: 22/05/2006, 16h16
  3. [VB.NET] Comment remplir un Array
    Par Immobilis dans le forum ASP.NET
    Réponses: 6
    Dernier message: 10/11/2005, 23h49
  4. Comment remplir un ComboBox avec le nom des feuilles Excel ?
    Par libracom dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/06/2005, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo