Comment les ITEMS d'une ListBox et d'une CheckedListBox
Salut à tous ,
J'ai une Form sur laquelle j'ai mis une ListBox et une CheckedListBox , je travaille avec VB 2010 Professionnal Edition et une base de données SQL SERVER 2008.
Tout d'abord je veux remplir une table qui contient deux champs seulement :
ProfDivisions ( #idDiv,"idProf )
Tout simplement la table ProfDivisions est formée d'une clé primaire composée et qui est reliée à deux autres tables Divisions et Profs :
Divisions ( idDiv , libDiv , ... )
Profs ( idProf , nomProf , .... )
C'est-à-dire que la table ProfDivisions est reliée à ces deux tables ci-dessus.
Sur la ListBox j'arrive à la remplir avec le nom et prénom des professeurs avec ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| cn.ConnectionString = strcon
Dim strProfs As String = "select idprof,nomp + ' ' + prenp as professor from profs"
Dim daProfs As New SqlDataAdapter(strProfs, cn)
Dim dtProfs As New DataTable("profs")
If cn.State Then cn.Close()
cn.Open()
daProfs.Fill(dtProfs)
cn.Close()
For Each dr As DataRow In dtProfs.Rows
lstProfs.Items.Add(dr("professor").ToString)
Next
lstProfs.DisplayMember = "professor"
lstProfs.ValueMember = "idprof" |
La CheckedListBox j'arrive à la remplir avec le nom des divisions avec
ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Dim strDivs As String = "select idcla,libcla from divisions"
Dim daDivs As New SqlDataAdapter(strDivs, cn)
Dim dtDivs As New DataTable("divisions")
If cn.State Then cn.Close()
cn.Open()
daDivs.Fill(dtDivs)
cn.Close()
For Each r As DataRow In dtDivs.Rows
chkListDivs.Items.Add(r("libcla").ToString)
Next
chkListDivs.DisplayMember = "libcla"
chkListDivs.ValueMember = "idcla" |
L'utilisateur ne pourra sélectionné qu'un seul professeur et pourra sélectionné 3 à 4 divisions car le maximum de classes (divisions) pour un prof c'est 4 et le minimum c'est 3.
Donc comment enregistrer dans la table ProfDivisions ce que l'utilisateur a sélectionné c'est -à-dire : Un Prof de la ListBox et 4 Divisions de la CheckedListBox.
J'ai essayé ce code pour l'enregistrement des Items de la CheckedListBox seulelment mais ça ne marche pas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
cn.ConnectionString = strcon
Dim i As Integer
For i = 0 To chkListDivs.CheckedItems.Count - 1
Dim str As String = chkListDivs.CheckedItems(i).ToString()
Dim cmd As SqlCommand = New SqlCommand()
cmd.CommandText = "insert into ProfDivisions values('" + str + "')"
cmd.Connection = cn
cmd.ExecuteNonQuery()
Next
cn.Close()
End Sub |
J'arrive pas à trouver la bonne solution pour à la fois enregistrer l'ID du professeur et les ID des 4 divisions car la table ProfDivisions est formée ainsi :
ProfDivisions ( #idDivision , #idProf )
Merci de votre aide.