Erreur paramètre d'index [Résolu]

- - Dernière réponse :  SeeZix - 6 janv. 2019 à 12:39
Bonjour !

J'ai créé une base de données et j'ai créé un logiciel avec c# afin de m'y connecté et d'interagir avec.

J'ai créé une listview avec les éléments de ma base de données à l'intérieur, j'ai créé un bouton permettant d'ouvrir une nouvelle form afin de modifier un élément sélectionnée dans la listview.

par exemple la requête sql va prendre en compte l'élément selectionné mais aussi les élément d'une textebox mais celle-ci se trouve sur la deuxième form.

Le problème c'est que lorsque j'exécute le programme j'ai une erreur qui me parle d'index et je ne sais pas c'est quoi. Voici l'erreur :

'InvalidArgument=La valeur '10' n'est pas valide pour 'index'.

Nom du paramètre : index'

Voici mon code :
public partial class Ajouter_Vente : Form
{

private concession _concession; public Ajouter_Vente(concession concession)
{
InitializeComponent();
_concession = concession;
}

MySqlConnection connexion;

private void bt_ajouter_Click(object sender, EventArgs e)
{
using (concession concession =new concession())
connexion = new MySqlConnection("DATABASE=Concession; SERVER=localhost; user id=root; pwd=root");
connexion.Open();
MySqlCommand commande = new MySqlCommand("INSERT INTO Client_Stock_Vente (Id_Client, Id_Stock, Date_Vente) VALUES ((SELECT Id_Client FROM Client WHERE Nom = @Nom AND Prenom = @Prenom AND Adresse = @Adresse AND numero = @Numero), (SELECT Id_Stock FROM Stock WHERE Kilometrage = @Kilometrage AND Prix_Achat = @Prix_Achat AND Prix_Vente = @Prix_Vente AND Date_CT = @Date_CT AND Option_Vehicule = @Option AND Puissance_Fiscale = @Puissance_Fiscale), @Date_Vente)", connexion);

ListViewItem element = _concession.lv_vehicule.SelectedItems[10];
string Marque = element.SubItems[0].Text;
string Modele = element.SubItems[1].Text;
string Annee = element.SubItems[2].Text;
string Porte = element.SubItems[3].Text;
string Transmission = element.SubItems[4].Text;
string Couleur = element.SubItems[5].Text;
string Energie = element.SubItems[6].Text;
string Kilometrage = element.SubItems[7].Text;
string Date_CT = element.SubItems[8].Text;
string Option_Vehicule = element.SubItems[9].Text;
string Puissance_Fiscale = element.SubItems[10].Text;
commande.Parameters.AddWithValue("@Marque", Marque);
commande.Parameters.AddWithValue("@Modele", Modele);
commande.Parameters.AddWithValue("@Annee", Annee);
commande.Parameters.AddWithValue("@Porte", Porte);
commande.Parameters.AddWithValue("@Transmission", Transmission);
commande.Parameters.AddWithValue("@Couleur", Couleur);
commande.Parameters.AddWithValue("@Energie", Energie);
commande.Parameters.AddWithValue("@Kilometrage", Kilometrage);
commande.Parameters.AddWithValue("@Date_CT", Date_CT);
commande.Parameters.AddWithValue("@Option_Vehicule", Option_Vehicule);
commande.Parameters.AddWithValue("@Puissance_Fiscale", Puissance_Fiscale);

commande.Parameters.AddWithValue("@Nom", tb_nom.Text);
commande.Parameters.AddWithValue("@Prenom", tb_prenom.Text);
commande.Parameters.AddWithValue("@Adresse", tb_adresse.Text);
commande.Parameters.AddWithValue("@Numero", tb_numero.Text);
commande.Parameters.AddWithValue("@Date_Vente", Convert.ToDateTime(tb_date_vente.Text).ToString("yyyy-MM-dd"));
commande.ExecuteNonQuery();
commande.Parameters.Clear();

}
}
Afficher la suite 

2 réponses

Messages postés
1911
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
16 août 2019
65
0
Merci
bonjour et tous mes vœux
ListViewItem element = _concession.lv_vehicule.SelectedItems[0];
te donne le listviewItem sélectionné et non avec l'indice 10
Tous mes voeux aussi,
Donc que dois-je faire ?
vb95
Messages postés
1911
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
16 août 2019
65 > SeeZix -
modifier la ligne de code évidemment !
Bien évidemment je me doute, mais je ne sais pas quoi faire, je ne suis qu'un simple étudiant en BTS, j'apprend au fur et à mesure, c'est la première fois que je fais ça.
J'aimerai bien une aide de votre part.
vb95
Messages postés
1911
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
16 août 2019
65 > SeeZix -
regarde la ligne avec un commentaire en vert
la première ligne de la base de données qui est sélectionnée a l'index 0
Si il y en avait plusieurs la seconde ligne aurait l'index 1 , la troisième l'index 2, etc …..

public partial class Ajouter_Vente : Form
    {
 
        private concession _concession;  public Ajouter_Vente(concession concession)
        {
            InitializeComponent();
            _concession = concession;
        }
 
        MySqlConnection connexion;
 
        private void bt_ajouter_Click(object sender, EventArgs e)
        {
            using (concession concession =new concession())
            connexion = new MySqlConnection("DATABASE=Concession; SERVER=localhost; user id=root; pwd=root");
            connexion.Open();
            MySqlCommand commande = new MySqlCommand("INSERT INTO Client_Stock_Vente (Id_Client, Id_Stock, Date_Vente) VALUES ((SELECT Id_Client FROM Client WHERE Nom = @Nom AND Prenom = @Prenom AND Adresse = @Adresse AND         numero = @Numero), (SELECT Id_Stock FROM Stock WHERE Kilometrage = @Kilometrage AND Prix_Achat = @Prix_Achat AND Prix_Vente = @Prix_Vente AND Date_CT = @Date_CT AND Option_Vehicule = @Option AND Puissance_Fiscale = @Puissance_Fiscale), @Date_Vente)", connexion);
             
            ListViewItem element = _concession.lv_vehicule.SelectedItems[0]; // ici le changement
            string Marque = element.SubItems[0].Text;
            string Modele = element.SubItems[1].Text;
            string Annee = element.SubItems[2].Text;
            string Porte = element.SubItems[3].Text;
            string Transmission = element.SubItems[4].Text;
            string Couleur = element.SubItems[5].Text;
            string Energie = element.SubItems[6].Text;
            string Kilometrage = element.SubItems[7].Text;
            string Date_CT = element.SubItems[8].Text;
            string Option_Vehicule = element.SubItems[9].Text;
            string Puissance_Fiscale = element.SubItems[10].Text;
            commande.Parameters.AddWithValue("@Marque", Marque);
            commande.Parameters.AddWithValue("@Modele", Modele);
            commande.Parameters.AddWithValue("@Annee", Annee);
            commande.Parameters.AddWithValue("@Porte", Porte);
            commande.Parameters.AddWithValue("@Transmission", Transmission);
            commande.Parameters.AddWithValue("@Couleur", Couleur);
            commande.Parameters.AddWithValue("@Energie", Energie);
            commande.Parameters.AddWithValue("@Kilometrage", Kilometrage);
            commande.Parameters.AddWithValue("@Date_CT", Date_CT);
            commande.Parameters.AddWithValue("@Option_Vehicule", Option_Vehicule);
            commande.Parameters.AddWithValue("@Puissance_Fiscale", Puissance_Fiscale);
 
            commande.Parameters.AddWithValue("@Nom", tb_nom.Text);
            commande.Parameters.AddWithValue("@Prenom", tb_prenom.Text);
            commande.Parameters.AddWithValue("@Adresse", tb_adresse.Text);
            commande.Parameters.AddWithValue("@Numero", tb_numero.Text);
            commande.Parameters.AddWithValue("@Date_Vente", Convert.ToDateTime(tb_date_vente.Text).ToString("yyyy-MM-dd"));
            commande.ExecuteNonQuery();
            commande.Parameters.Clear();
 
        }
    }
Je n'ai plus cette erreur, merci !
Commenter la réponse de vb95
Messages postés
13637
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
22 août 2019
298
0
Merci
Bonjour SeeZix

Etre étudiant, n'est pas une excuse pour ne pas lire les réponses que l'on te donne.

Dès son premier message VB (que je salue au passage) t'as indiqué la ligne, la cause et la solution.

Dans ton code, il y a un 10 dans le sien un 0. Il suffit de lire.

Commence donc par appliquer cette modification avant de te plaindre que c'est trop dur.

Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Commenter la réponse de Whismeril