Erreur paramètre d'index

Résolu
SeeZix - 3 janv. 2019 à 23:15
 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();

}
}

2 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
3 janv. 2019 à 23:39
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
0
Tous mes voeux aussi,
Donc que dois-je faire ?
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > SeeZix
4 janv. 2019 à 00:15
modifier la ligne de code évidemment !
0
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.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > SeeZix
Modifié le 4 janv. 2019 à 01:12
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();
 
        }
    }
0
Je n'ai plus cette erreur, merci !
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
Modifié le 4 janv. 2019 à 09:20
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.

0
Rejoignez-nous