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