ListBox et CheckedListBox
Salut à tous
J'aimerais savoir comment ajouter des données à une table de base données SQL SERVER 2008 en VB.NET depuis une ListBox et une CheckedListBox en testant en premier lieu les ITEMS séléctionnées s'ils existent déjà ou pas dans la base de données et sachant aussi qu'on a droit à une et une seule sélection dans la ListBox et à 3 ou 4 sélections dans la CheckedListBox .
La table contient deux champs seulement :
DivProfs ( #idcla , #idprof ) et sont de type Integer
J'ai fait ce code pour le remplissage de la ListBox et de la CheckedListBox dans une procédure puis l'appeller dans le Load event de la feuille :
Private Sub FillListBox()
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"
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"
End Sub
Private Sub frmProfsDivisions_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
chkListDivs.CheckOnClick = True
FillListBox()
End SubVoici le code pour l'ajout dans la base de données :
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim cmdAddProfDiv As New SqlCommand
cmdAddProfDiv.Connection = cn
cmdAddProfDiv.CommandText = "insert into divprofs (idcla,idprof) values (@idcla,@idprof)"
cmdAddProfDiv.Parameters.Clear()
Dim pr_idcla As New SqlParameter("@idcla", SqlDbType.Int, 4)
cmdAddProfDiv.Parameters.Add(pr_idcla)
Dim pr_idprof As New SqlParameter("@idprof", SqlDbType.Int, 4)
cmdAddProfDiv.Parameters.Add(pr_idprof)
Dim strCheck As String = "select * from divprofs "
Dim daProfDiv As New SqlDataAdapter(strCheck, cn)
Dim dsProfDiv As New DataSet
Dim dtProfDiv As New DataTable("divprofs")
If cn.State Then cn.Close()
cn.Open()
dtProfDiv.Clear()
daProfDiv.Fill(dtProfDiv)
cn.Close()
cn.Open()
Dim drow As DataRow
For Each itemProf In lstProfs.SelectedIndices
For Each indexChecked In chkListDivs.CheckedIndices
For Each drow In dtProfDiv.Rows
If drow("idcla") = (indexChecked + 1) And drow("idprof") = (itemProf + 1) Then
MsgBox("Données existantes,Veuillez réessayez ! ", MsgBoxStyle.Exclamation )
Exit For
End If
Next
cmdAddProfDiv.Parameters("@idcla").Value = indexChecked + 1
cmdAddProfDiv.Parameters("@idprof").Value = itemProf + 1
cmdAddProfDiv.ExecuteNonQuery()
Next
Next
MsgBox("Ajout avec Succès !", MsgBoxStyle.Information )
cn.Close()
cmdAddProfDiv.Dispose()
End SubMerci d'avance