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 :
La CheckedListBox j'arrive à la remplir avec le nom des divisions avec
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 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"
ce code :
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.
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 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"
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 :
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 :
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 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
ProfDivisions ( #idDivision , #idProf )
Merci de votre aide.
Partager