Bonjour,
que je met mon enregistrement vers une table sur sql server un message s'affiche : L'index se trouve en dehors des limites du tableau.
voici mon code :
Dim daa As New SqlDataAdapter
daa.SelectCommand = cn.CreateCommand
daa.SelectCommand.Connection = cn
daa.SelectCommand.CommandType = CommandType.Text
daa.SelectCommand.CommandText = "select * from evaluation"
daa.Fill(dss, "evaluation")
daa.InsertCommand = cn.CreateCommand
daa.InsertCommand.Connection = cn
daa.InsertCommand.Parameters.Clear()
daa.InsertCommand.CommandText = "insert into evaluation values(@idEvaluation,@NVMaitrise,@NOM,@PRENOM,@Repère,@GP,@tache,@MATRICULE)"
daa.InsertCommand.Parameters.Add("@NVMaitrise", SqlDbType.NVarChar, 20)
daa.InsertCommand.Parameters("@NVMaitrise").Value = Me.ComboBox1.SelectedItem
daa.InsertCommand.Parameters.Add("@idEvaluation", SqlDbType.Int, 8)
....
daa.InsertCommand.Parameters("@Repère").Value = Me.TextBox4.Text
daa.InsertCommand.Parameters.Add("@GP", SqlDbType.NVarChar, 255)
daa.InsertCommand.Parameters("@GP").Value = Me.TextBox5.Text
daa.InsertCommand.Parameters.Add("@tache", SqlDbType.NVarChar, 255)
daa.InsertCommand.Parameters("@tache").Value = Me.CheckedListBox2.CheckedItems.Item(0).ToString
daa.InsertCommand.ExecuteNonQuery()
MessageBox.Show("Tache bien evaluer")
si le paramètre existe mais item il de type string mon objectif c'est que a partir les élément cocher dans le checkedListBox2 il serait insérer des la table évaluation précisément au champ tache
Whismeril
Messages postés18781Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention26 novembre 2023645 12 avril 2016 à 20:02
Peu importe ce qu'il y a dans ta cheklistbox ou ta base de données.
Ton message d'erreur est sans équivoque.
Un index n'existe pas dans une collection.
Sur cette ligne, il y a 2 collections, une des deux ne contient pas l'index indiqué.
Soit Item ne contient pas d'index 0 (par conséquent est vide....)
Soit Parameters ne contient pas d'index @tache
bonjour,
logique en faisant comme ça
daa.InsertCommand.Parameters("@tache").Value = Me.CheckedListBox2.CheckedItems.ToString
tu essaye d’attribué a ta valeur une collection, car checkeditems retourne la collection des items sélectionner. il te faut donc préciser quel item tu souhaite attribué a ta valeur comme il est fait dans le code que tu a fourni
Me.CheckedListBox2.CheckedItems.item(0).ToString.
si l'index se trouve en dehors des limites du tableau, comme il te l'a été dit c que l'item(0) n'existe pas donc que ta collection est vide quand tu veut attribué ta valeur.
comment déclenche tu l'enregistrement via un bouton ou événement ?
Etrange, je ne conné pas trop les base de donné mais visiblement ta colonne "tache" existe bien car lorsque tu fait ceux-ci : Me.CheckedListBox2.CheckedItems.ToString tu obtiens System.Windows.Forms.CheckedListBox+CheckedItemCollection dans la bdd.
es tu sure de bien cocher un item dans checkedlistbox2 avant de cliquer sur ton bouton ?
tu peut déjà vérifier si un item est bien cocher dans la checkedlistbox avant d’enregistrer.
If CheckedListBox2.CheckedItems.Count <> 0 Then 'ici soit tu colle tous ton code si une valeur doit obligatoirement être attribué a "tache".
' ou uniquement daa.InsertCommand.Parameters.Add("@tache", SqlDbType.NVarChar, 255) daa.InsertCommand.Parameters("@tache").Value = Me.CheckedListBox2.CheckedItems.Item(0).ToString
Else MsgBox("Aucun item cocher dans CheckedListBox2.") End If
cs_Le Pivert
Messages postés7902Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention14 novembre 2023137 13 avril 2016 à 10:40
Bonjour,
Une petite recherche sur google : cheklistbox VB.Net
et tu as ta réponse: