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és19034Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 2 mai 2024656 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