Erreur de conversion

Signaler
-
yg_be
Messages postés
9645
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 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
9645
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2020
530
bonjour, à quelle ligne l'erreur se produit-elle?
Merci pour votre intervention
C'est dans toutes les lignes
yg_be
Messages postés
9645
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2020
530
à quelle ligne de code?
> yg_be
Messages postés
9645
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2020

C'est à la ligne de la mise à jour
Messages postés
14239
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2020
459
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
yg_be
Messages postés
9645
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2020
530 > Mervelis
quand le problème se produit-il? pendant l'exécution du code?
> yg_be
Messages postés
9645
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2020

Oui
Messages postés
14239
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2020
459
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
14239
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2020
459
Dans ce cas, tu mets un point d’arrêt au début de la méthode et tu exécutes en pas à pas
yg_be
Messages postés
9645
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2020
530
ou faire de plus petits try/catch, ou récupérer plus d'info de l'exception?
Messages postés
9645
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2020
530
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?