Erreur de conversion du type de données varchar en numeric.

Messages postés
12
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
10 avril 2013
- - Dernière réponse : SharpMao
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
- 27 mai 2010 à 06:17
j'ai un champ dans ma base de type numeric(18,3) donc dans mon application j'ai déclaré un double, si j'utilise un nombre entier par exemple 18 22 ...
tout ça marche bien mais si j'utilise 21,5 par exemple une exception est générer "Erreur de conversion du type de données varchar en numeric."

pour la convertion j'utilise
Convert.toDouble(textbox.text);

quel est l'erreur exactement et qu'est ce que je doit faire
Afficher la suite 

3 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
51
0
Merci
Hello,

Je ne pense pas que ton problème vienne de cette conversion, mais plus probablement de la conversion dans la requête pour la base de données.

Pourrais-tu nous montrer le code que tu utilises pour l'insertion dans la base ?


Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Commenter la réponse de SharpMao
Messages postés
12
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
10 avril 2013
0
Merci
voilà le code que j'ai utiliser

   public bool verifTVA(double code)
        {
            string rsql "select * from tva where tva '" +code+ "'";
            CnxBase cn = new CnxBase();
            bool result = true;
            try
            {
                SqlCommand myCommand = new SqlCommand(rsql, CnxBase.myConn);
                myCommand.Transaction = CnxBase.trans;
                SqlDataReader myReader = myCommand.ExecuteReader();
                while (myReader.Read())
                {
                    result = false;
                }

                myReader.Close();
            }
            catch (Exception myErr)
            {
                MessageBox.Show(myErr.Message + " " + rsql);
            }
            return result;

        }
Commenter la réponse de cs_houba80
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
51
0
Merci
Re-salut,

C'est bien ce que je pensais. Il faut utiliser des requêtes paramétrées.
Le problèmes vient que ta base de données utilise sans doute le point comme caractère de séparation entre les entiers et les décimales, alors que ton système utilise la virgule (ou le contraire). Je parie que si tu regarde la valeur de rsql, tu auras "Select * from tva where tva=21,5".
En utilisant les requêtes paramétrées, tu n'auras pas ce genre de problèmes, car tu n'enverras pas ce nombre sous forme de string à ta base de données, mais vraiment ton double.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Commenter la réponse de SharpMao