L'index se trouve en dehors des limites du tableau. [Résolu]

graoui - 12 avril 2016 à 17:50 - Dernière réponse :  graoui
- 13 avril 2016 à 17:02
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")

le problème s’affiche dans cette partie :

daa.InsertCommand.Parameters("@tache").Value = Me.CheckedListBox2.CheckedItems.Item(0).ToString
Afficher la suite 

11 réponses

Répondre au sujet
0
Utile
aidez moi SVP ET MERCI
Commenter la réponse de graoui
Whismeril 10526 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - 12 avril 2016 à 17:59
0
Utile
1
Bonsoir,

soit Parameters("@tache") n'existe pas, soit Item(0).


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
Commenter la réponse de Whismeril
Whismeril 10526 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - 12 avril 2016 à 20:02
0
Utile
6
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
graoui > graoui - 13 avril 2016 à 09:31
normalement il marche comme ça :
daa.InsertCommand.Parameters("@tache").Value = Me.CheckedListBox2.CheckedItems.ToString

mais quand je verifier dans ma base de donné au lieu de la tache je retiens : System.Windows.Forms.CheckedListBox+CheckedItemCollection
Rykudos > graoui - 13 avril 2016 à 11:18
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 ?
graoui > Rykudos - 13 avril 2016 à 11:33
un bouton tous ça c'est dans un bouton
Rykudos > graoui - 13 avril 2016 à 13:36
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
graoui > Rykudos - 13 avril 2016 à 17:02
si déjà j'ai pas copie une partie de code qui empêche l'utilisateur de cocher la tache avant même d'entrer a la boucle qui fait l’insertion

de tout façon c'etait resolu mes amies j'ai déclaré une variable i en haut
dim i as integer

et au lieu de 0 je met le i et ça marche

daa.InsertCommand.Parameters("@tache").Value = Me.CheckedListBox2.CheckedItems.Item(i).ToString

merci comme meme :)
Commenter la réponse de Whismeril
cs_Le Pivert 4765 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - 13 avril 2016 à 10:40
0
Utile
Bonjour,

Une petite recherche sur google : cheklistbox VB.Net
et tu as ta réponse:

https://msdn.microsoft.com/fr-fr/library/e954th47(v=vs.110).aspx
Commenter la réponse de cs_Le Pivert

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.