Problème de conversion string to decimal

Résolu
najieme
Messages postés
6
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
22 mai 2009
- 29 avril 2009 à 12:03
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
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!

4 réponses

krimog
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
14 février 2015
51
29 avril 2009 à 14:49
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 ! -
3
krimog
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
14 février 2015
51
29 avril 2009 à 12:28
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 ! -
0
najieme
Messages postés
6
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
22 mai 2009

29 avril 2009 à 13:14
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!
0
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
29 avril 2009 à 22:58
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
*/
0