Erreur de conversion

Signaler
-
Messages postés
11529
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juillet 2020
-
Bonjour,
J'ai un petit souci avec mon application developpé en C# & SQL Server, les enregistrements se passe bien comme ajout de produit et suppression mais quand s'essaie de mettre à jour ou modifier un élément j'ai ce messgage d'erreur
(Conversion failed when converting the nvarchar value to data type int.)
Et si quelqu'un à une solution aider moi svp
Voici mon code utilisé et le query que j'ai utilisé pour la création de la table :
   private void Updates()
        {
            if (txtPCode.Text.Trim() == string.Empty || txtPrice.Text.Trim() == "" || txtQty.Text.Trim() == "" || txtDesc.Text == "")
            {
                MessageBox.Show("Entrez l'enregistrement suivant ...!");
                return;
            }
            try
            {
                if (MessageBox.Show("Vous êtes sûre de mettre à jour ce produit..?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    //select brand
                    string bid = "";
                    string cid = "";
                    con.Open();
                    cmd = new SqlCommand("select id from tblBrand where brand like '" + cmbBrand.Text + "'", con);
                    dr = cmd.ExecuteReader();
                    dr.Read();
                    if (dr.HasRows)
                    {
                        bid = dr[0].ToString();
                    }
                    dr.Close();
                    con.Close();

                    //select category

                    con.Open();
                    cmd = new SqlCommand("select id from tblCategory where category like '" + cmbCategory.Text + "'", con);
                    dr = cmd.ExecuteReader();
                    dr.Read();
                    if (dr.HasRows)
                    {
                        cid = dr[0].ToString();
                    }
                    dr.Close();
                    con.Close();




                    con.Open();
                    cmd = new SqlCommand("Update tblProduct set barcode=@barcode, pdesc=@pdesc,brandid=@bid,categoryid=@cid,price=@price,qty=@qty where pcode like @pcode", con);
                    cmd.Parameters.AddWithValue("@PID", txtPCode.Text);
                    cmd.Parameters.AddWithValue("@barcode", txtBarcode.Text);
                    cmd.Parameters.AddWithValue("@Pdesc", txtDesc.Text);
                    cmd.Parameters.AddWithValue("@bid", bid);
                    cmd.Parameters.AddWithValue("@cid", cid);
                    cmd.Parameters.AddWithValue("@price",txtPrice.Text);
                    cmd.Parameters.AddWithValue("@qty", txtQty.Text);
                    cmd.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("mMise à jour effectuée avec succès");
                    clear();
                    flist.LoadRecord();
                    this.Dispose();
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }
        }


 create table tblProduct
(
pcode int primary key,
barcode nvarchar(50),
pdesc nvarchar(MAX),
brandid int,
categoryid int,
price decimal(18,2),
qty int
)


Merci d'avence pour votre aide

Configuration: Windows / Firefox 72.0

6 réponses

Messages postés
11529
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juillet 2020
659
bonjour, à quelle ligne l'erreur se produit-elle?
Merci pour votre intervention
C'est dans toutes les lignes
Messages postés
11529
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juillet 2020
659
à quelle ligne de code?
>
Messages postés
11529
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juillet 2020

C'est à la ligne de la mise à jour
Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juillet 2020
554
Bonjour Mervlis.
Si yg_be insiste c’est par ce que ça saute pas au yeux.

Peux apporter une réponse claire à la question « quelle ligne de code génère l’erreur? ».

Cette réponse claire ne peut avoir que 2 formes:
  • tu la copies colles dans ta réponse
  • tu indiques le numéro de la ligne tel qu’il apparaît dans le forum, pas dans Visual Studio

Whismeril je ne sais pas comment répondre a cette question mon grand car je ne sais pas d'ou vient cette erreur puisque quand j'essaie de modifier les zones des textes une après l'autre ça ne marche pas
Messages postés
11529
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juillet 2020
659 > Mervelis
quand le problème se produit-il? pendant l'exécution du code?
>
Messages postés
11529
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juillet 2020

Oui
Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juillet 2020
554
Visual ne s’arrête pas sur une ligne?
Non, rien qu'une fenêtre qui apparaît avec ce message (Conversion failed when converting the nvarchar value to data type int.)
Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juillet 2020
554
Dans ce cas, tu mets un point d’arrêt au début de la méthode et tu exécutes en pas à pas
Messages postés
11529
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juillet 2020
659
ou faire de plus petits try/catch, ou récupérer plus d'info de l'exception?
Messages postés
11529
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juillet 2020
659
il me semble que deux paramétres de la ligne 43 ne sont pas pris en compte dans les AddWithValue: @pdesc et @pcode.
ne faudrait-il pas commencer par corriger cela?