Combobox et requête sql

Résolu
cs_Herminator Messages postés 34 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 11 février 2008 - 19 sept. 2007 à 12:18
cs_Herminator Messages postés 34 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 11 février 2008 - 20 sept. 2007 à 11:20
Bonjour à tous,
Je débute en vb2005, et j'ai un problème pour utiliser le Displaymember et Valuemember du combobox.
En gros, comment je peux charger la liste d'un combobox avec un champ 'CustomerName', et récupérer le champ 'CustomerId' du client sélectionné ?

Voici comment je rempli mon combobox :

Private
Sub Remplissage_ComboBox1()
Rt.Open(
"SELECT DISTINCT SCustomer.CustomerNo, SCustomer.Name FROM SProd, SCustomer WHERE SProd.Customer_Id = SCustomer.Id ORDER BY SCustomer.Name ", Ct)

ComboBox1.Items.Clear()

Me.Cursor = Windows.Forms.Cursors.WaitCursor

While
Not Rt.EOF

   ComboBox1.Items.Add(Rt(1).Value)
   Rt.MoveNext()

End
While

Me.Cursor = Windows.Forms.Cursors.Default
Rt.Close()

End
SubMerci d'avance pour votre aide.

9 réponses

lesoleil2010 Messages postés 26 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 20 août 2010 1
19 sept. 2007 à 16:03
je te propose une astuce si il n ya pas une maniere pour faire ca tu crie deux combobox une visible et l autre cacher ,la premiere tu le remplie avec les noms et l'autre(cacher) avec le numero
dans le cas de la selection d'un nom dans levenement combobox_visible_SelectedIndexChanged

tu met  combobox_cacher.Items.item(combobox_visible.selectedindex)
comme ca tu récupére le numero correspandant au nom choisis....
3
ThoT49 Messages postés 153 Date d'inscription dimanche 4 mars 2007 Statut Membre Dernière intervention 24 avril 2011 2
19 sept. 2007 à 13:52
Pour charger des données dans un combobox avec access (je ne sais pas ce que t'utilise donc je t'aide pour access) il faut :


        'définition du chemin de la base de donnée
        Me.ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" + _
          "Data Source=" + Application.StartupPath + "\BDD.mdb"

        'définition de la variable sql
        Me.Sql = "SELECT * FROM TableEssai" 'sql est déclaré en string

        'choix de la connection
        Me.Conn.ConnectionString = Me.ConnString 'connstring déclaré en string

        'on ouvre la connection
        Me.Conn.Open() 'conn déclaré en oledbconnection

        'déclaration du data adapteur
        Dim Dta As New OleDbDataAdapter(Me.Sql, Me.Conn)

        'on charge les données de la liste dans le dataset
        Dta.Fill(Me.Dts, "Table") 'dts déclaré en dataset

        'on rempli la table avec le dataset
        Me.Dtt = Me.Dts.Tables("Table") 'dtt déclaré en datatable

        'on rempli le combobox avec la table
        Me.ComboBox1.DataSource = Me.Dtt

        'on choisi le champs à afficher
        Me.ComboBox1.DisplayMember = "Champ"

        'on ferme la connection
        Me.Conn.Close(),

----

Voila cela fonctionne comme cela et c'est stable... Bien sur il faut utiliser access.

Je pense que avec sqlserver cela revien au même ...

Bonne chance ;)
0
cs_Herminator Messages postés 34 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 11 février 2008
19 sept. 2007 à 14:03
Pour info, j'ouvre une table sous sql Server 7.
J'essaye tout de suite.
Merci du coup de main !
0
lesoleil2010 Messages postés 26 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 20 août 2010 1
19 sept. 2007 à 15:21
toncombobox.datasoure=tondataset.tables("latable")


toncombobox.displaymember="nom_client" ce que seras afficher dans le combobox
toncombobox.valuemember="numero_client" la valeur retourner par le combobox lors du choix d'un nom


 
0

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

Posez votre question
cs_Herminator Messages postés 34 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 11 février 2008
19 sept. 2007 à 15:32
Est-ce que c'est possible sans passer par un dataset, c'est à dire en adodb, de cette manière :
Dans un module :
Public Ct
As
New ADODB.Connection

Public Cdt
As
New ADODB.Command

Dans ma form:

Dim Rt
As
New ADODB.Recordset

Private
Sub Form1_Load(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
Me.Load
Ct.ConnectionString =
"Provider=SQLOLEDB.1;Data Source=GPAO;" _
&
"Initial Catalog=Pcp2;User id=sa;"Ct.Open()

Cdt.ActiveConnection = Ct

Rt.CursorLocation = ADODB.CursorLocationEnum.adUseClient
Rt.CursorType = ADODB.CursorTypeEnum.adOpenDynamic
Rt.LockType = ADODB.LockTypeEnum.adLockPessimistic

Remplissage_ComboBox1()

End
SubLe code de Remplissage_ComboBox1() étant dans la question du départ !

Merci pour votre aide, car je rame !!!
0
cs_Herminator Messages postés 34 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 11 février 2008
19 sept. 2007 à 16:09
Ok, j'ai compris. Mais je ferais ça demain.
Merci beaucoup pour votre aide !
0
ThoT49 Messages postés 153 Date d'inscription dimanche 4 mars 2007 Statut Membre Dernière intervention 24 avril 2011 2
19 sept. 2007 à 20:20
lesoleil2010 t'as dit la même chose que moi mais plus précisément pour ton problème ...

Tu véra c'est très simple :p
0
lesoleil2010 Messages postés 26 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 20 août 2010 1
19 sept. 2007 à 23:19
oui oui ta raison j ai pas fais attontion dsl,l'essentiel que Herminator trouve une solution
0
cs_Herminator Messages postés 34 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 11 février 2008
20 sept. 2007 à 11:20
Super, ça marche.
Merci encore de votre aide à tous les deux.

Salutations.
0
Rejoignez-nous