Bonjour,
j'ai créé un ComboBox avec comme source un requete sql qui est :
Dans ce ComboBox, il y a des nom de clients. Quand je clique sur un nom dans la liste déroulant, la valeur de base de change pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM Contact
POURQUOI ?
Voici quelque bout de code :
- La connexion à la base de données (sur un evenement OnLoad)
- DataSource de mon ComboBox (qui vient juste aprés la connexion) :
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 'creation du DataSet ds=New System.Data.DataSet() 'chemin du fichier .mdb chemin=System.AppDomain.CurrentDomain.BaseDirectory() & "bdd.mdb" 'chaine de connexion cs="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & chemin 'la connexion cnx=New System.Data.OleDb.OleDbConnection cnx.ConnectionString=cs cnx.Open() 'la commande cmd=New System.Data.OleDb.OleDbCommand 'la requete sql="select * from Contact" cmd.CommandText=sql 'creation d'un adaptateur adap= New System.Data.OleDb.OleDbDataAdapter(cmd) cmd.Connection=cnx adap.Fill(ds, "Contact") 'remplissage du DS à partir de la table "Contact" tbl=ds.Tables("Contact") 'objet table Contact MsgBox("Connexion à la base de données effectuée")
- Codage de mon ComboBox
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 'Indiquer au ComboBox d'afficher la table "Contact" (indiquer la source) cbStruct_Cont.DataSource=ds.Tables("Contact") 'Indiquer quelle colonne afficher cbStruct_Cont.DisplayMember="Struct_Cont"
dans ce dernier code il y a un recherche à partir d'un Nom (exp) et ensuite recupérer le numéros de ligne de la dataTable du résultat de la recherche.
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 Sub CbStruct_ContSelectedIndexChanged(sender As Object, e As EventArgs) 'la commande cmd=New System.Data.OleDb.OleDbCommand 'la requete sql="select Num_Cont from Contact where Struct_Cont='"+cbStruct_Cont.Text+"'" cmd.CommandText=sql 'creation d'un adaptateur adap= New System.Data.OleDb.OleDbDataAdapter(cmd) cmd.Connection=cnx adap.Fill(ds, "Contact") 'remplissage du DS à partir de la table "Contact" tbl=ds.Tables("Contact") 'objet table Contact 'recherche du nom de la structure dans la base et incrémentation du n° de ligne Dim exp As String 'expression à rechercher 'Dim sortOrder As String = "Nom DESC" Dim foundRows() As System.Data.DataRow 'résultat dans des DataRow exp="Struct_Cont='"+cbStruct_Cont.Text+"'" foundRows = tbl.Select(exp)'sortOrder Dim objetDatat1 As New System.Data.DataTable For Each r As System.Data.DataRow In foundRows objetDatat1.ImportRow(r) Next MsgBox("n° "+objetDatat1.Rows.Count.ToString) 'AffichDS() End Sub
Donc je recapitule, cela me donne bien le numéros de la ligne mais celui de la premiere valeur du ComboBox, et quand je clique sur une autre valeur elle ne change pas ! que faire ? ^^
Partager