Problème avec une Listeview

capitainecav Messages postés 17 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 avril 2008 - 31 mars 2008 à 16:23
capitainecav Messages postés 17 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 avril 2008 - 7 avril 2008 à 17:17
Bonjour à tous,

J'ai un message d'erreur que je ne comprend pas :

L'argument spécifié n'était pas dans les limites de la plage des valeurs valides. Nom du paramètre : index

Sur les tables ID et REALISATEUR, cela marche. Original = Oui/Non dans la base access.

 While Not (recordset.EOF)

                If strTable = "T_DVD" Then

                    Dim LV_item As New System.Windows.Forms.ListViewItem ' Pour affichage du résultat

                    strSQL = "SELECT * FROM " & strTable & " ORDER BY ID "

                    'Remplissage de la Liste View
                    LV_item = LV_resultat.Items.Add(CStr(recordset.Fields("ID").Value))

                    LV_item.SubItems.Insert(1, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, CStr(recordset.Fields("TITRE").Value)))

                    If Not IsDBNull(recordset.Fields("REALISATEUR").Value) Then
                        LV_item.SubItems.Insert(2, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, CStr(recordset.Fields("REALISATEUR").Value)))
                    End If

                    If Not IsDBNull(recordset.Fields("ORIGINAL").Value) Then
                        LV_item.SubItems.Insert(3, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, CStr(recordset.Fields("ORIGINAL").Value)))
                    End If

                    ' On passe à l'enregistrement suivant
                    recordset.MoveNext()

                Else : strTable = "T_DVD_JEUX"
                    'Remplissage de la Liste View
                   
                    ' On passe à l'enregistrement suivant
                    recordset.MoveNext()

                End If
            End While

Peut-on mettre des cases à cocher sur toute une colonne non-modifiable pour ces valeurs booléennes ?

merci pour vos réponses

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
1 avril 2008 à 01:29
Salut
Il a peut-être du mal à convertir un Booleen en String.
Essaye de passer par un CStr(CBool(x))
ou d'utiliser un If pour insérer le texte Oui ou Non selon que .Valeur = True ou False

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
capitainecav Messages postés 17 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 avril 2008
2 avril 2008 à 11:10
Bonjour,

J'ai tjrs le message:
L'argument spécifié n'était pas dans les limites de la plage des valeurs valides. Nom du paramètre : index

avec Cstr(CBool(x))

et même message avec

                    If recordset.Fields("ORIGINAL").Value = 0 Then
                        LV_item.SubItems.Insert(3, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, "Non"))

                    ElseIf recordset.Fields("ORIGINAL").Value = -1 Then
                        LV_item.SubItems.Insert(3, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, "Oui"))

                    End If
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
4 avril 2008 à 13:05
Re
Dans ta ListView, as-tu bien défini 4 colonnes (en mode Report) : La colonne principale + 3 SubItems ?
Parce que là, tu essayes d'écrire dans la 4ème colonne (avec l'index SubItem 3)
S'il te parle de problème d'index, ça me fait penser à ça
Est-ce que c'est sur la première donnée qu'il écrit que tu as cette erreur ou bien en plein milieu du traitement ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
capitainecav Messages postés 17 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 avril 2008
5 avril 2008 à 16:06
Bonjour,

C'est en plien milieu du traitement. J'ai mis une ligne simple et il me dit la même chose :

La ligne simple :
LV_item.SubItems.Insert(3, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, "Non"))

Dans les propriétés view de la liste , j'ai smallicon,largeicon,tile,list et details. pas de report.

Quelle la bonne propriété ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
6 avril 2008 à 04:50
Mode Report en VB6
C'est List ou Detail en VB.Net
Ca t'apprendra à poster ta question dans la mauvaise catégorie (catégorie passée de VB6 à .Net)
Tu viens de perdre un jour au lieu de prendre 30 secondes pour bien choisir la catégorie de la question.

Pour ton problème :
-1- je vois que la ligne où tu fais la même action avec le SubItem 2 ne semble pas poser de problème.
J'en déduit donc que c'est dans l'utilisation du SubItem 3 qu'il y a problème.
Au moment où l'erreur se produit, essaye d'afficher le nombre (Count) de SubItems de ta ListView et vérifie.
-2- Es-tu sûr que la méthode LV_item.SubItems.Insert soit la bonne ?
Sans avoir regardé dans l'aide, je verrais plutôt cette instruction comme une méthode d'ajout d'une colonne, pas comme une instruction de remplissage d'un SubItem existant.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
capitainecav Messages postés 17 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 avril 2008
7 avril 2008 à 17:17
Bonjour,

Excusez-moi pour la mauvaise catégorie du sujet.

Je viens de trouver le problème. En fait j'ai des enregistrements ne comportant pas de réalisateur et c'est cela que VB perturbe.
J'ai donc fait un test sur le réalisateur. Et cela marche en utilisant insert.

Peut-on améliorer le code ?
0
Rejoignez-nous