Problème de conversion string to decimal [Résolu]

Messages postés
6
Date d'inscription
mardi 3 mars 2009
Dernière intervention
22 mai 2009
- - Dernière réponse : cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
- 29 avril 2009 à 22:58
Bonjour tout le monde!
Comme nous somme débutant en dotnet; nous avons du problème avec la conversion string to decimal si quelqu'un peut nous aider!
On utilise le langage C#(ASP.NET) et MySql comme SGBD et nous sommes entrain de créer une application web.
Voici le probème: Nous avons un champ du type decimal;

 I/ Si la valeur contient du virgule et qu'on clique sur un bouton sauver(enregistrement dans la base MySql) on a l'erreur suivante(ERREUR N°1]): 

1/*ERREUR N°1*/
#42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '00,Type_Payement='CHECK',Specif_Payement='',DateTo_Finance='20/05/2009'where Pur' at line 1
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.


Exception Details: System.Exception: #42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '00,Type_Payement='CHECK',Specif_Payement='',DateTo_Finance='20/05/2009'where Pur' at line 1Source Error:
Line 1117:            catch (Exception e)
Line 1118:            {
Line 1119:                throw new Exception(e.Message);
Line 1120:            }
Line 1121:            finally

/*--------------------------------------------------------------------------------------------*/
II/Comme essais, si la valeur est separée par du point au lieu du virgule on a l'erreur N°2 suivante:

2/* ERREUR N°2 */
Server Error in '/Website' Application.
--------------------------------------------------------------------------------Input string was not in a correct format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.


Exception Details: System.FormatException: Input string was not in a correct format.
Source Error:
Line 68:             stp.amount = decimal.Parse(form_Amount.Text);
Qu'est ce que nous devons faire? Merci beaucoup!
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
3
Merci
Pour le 2), essaie Convert.ToDecimal(string input);
normalement, ça ne change rien, mais c'est plutôt ce dont j'ai habitude.

Pour le 1) essaie
- Soit de mettre des quotes autour de ton décimal (je ne sais plus comment SQL récupère les nombres à virgule).
- Soit d'utiliser _amount.ToString().Replace(",", ".") (très certainement nécessaire)
- Soit les 2

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de krimog
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
0
Merci
Salut

Ton erreur 1. est due à une erreur de syntaxe dans ta requête SQL. Si tu ne nous montres pas la requête entière, on aura du mal à t'aider.

Ton erreur 2. est due, comme l'indique le message, à un problème de format dans ton string d'entrée. Soit il est vide, soit il y a des caractères autres que des chiffres, soit tu as mis un point à la place d'une virgule (ou peut-être l'inverse, je ne suis pas sûr de moi).

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Commenter la réponse de krimog
Messages postés
6
Date d'inscription
mardi 3 mars 2009
Dernière intervention
22 mai 2009
0
Merci
Pour l'erreur N°1: si on insere  à la bases des valeurs autre que le decimal ca marche bien mais c'est ce decimal le probème!
  voici la requete sql:
public

void insert(){

string query =
"insert into statuspurf " +

"values('" + _purfNumber +
"'," + _purchaseOrder +
",'" + _statusPurf +
"','" + _orderPay +
"','" + _payAdress +
"','" + _deliveryDate +
"'," + _amount +
",'" + _typePay +
"','" + _specifPay +
"','" + _datetoFinance +
"')";

MySqlConnection conn =
new
MySqlConnection(
"Data Source=localhost;Initial Catalog=nom de base;User ID=root;password=mot de passe");

MySqlCommand cmd =
new
MySqlCommand();

try{

conn.Open();

cmd.Connection = conn;

cmd.CommandText = query;

cmd.ExecuteNonQuery();

}

catch (
Exception e){

//throw new Exception(e.Message);}

finally{

conn.Close();

}

}

Et pour l'erreur N°2: Nous n'avons pas mis d'autre caracter que la virgule mais il n'accepte pas. Est que decimal.parse() ne convertit pas stringTodecimal ou est ce qu'on devrait ajouter quelque chose?
Merci!
Commenter la réponse de najieme
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
0
Merci
Bonjour,

Ou d'utiliser une requête paramétrée, qui aide en général pas mal sur ce genre de problème.

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.