Convertir un string en decimal

Le
Olivier
Bonjour,

Je travaille sur une interface ASP .NET contenant plusieurs TextBox.
L'utilisateur doit saisir des valeurs décimales dans certaines TextBox. Les
données sont ensuite envoyées dans une table SQL Server.

Le problème que je rencontre est le suivant : l'utilisateur saisit une
valeur mais l'insertion dans la base ne fonctionne pas car le séparateur "."
est systématiquement remplacé par "," (vérification via SQL Server Profiler).

J'ai tenté de faire un Convert, un Parse, de modifier les paramètres de
globalisation via la classe CultureInfo, d'apporter une modification au
niveau du fichier de configuration avec l'élément globalization et de
modifier tout un tas de paramètres mais rien n'a résolu mon problème.

Voici un extrait du code (version avec une conversion classique) qui pose
problème :

1: string s = "34,23";
2: decimal d = Convert.ToDecimal(s);
3: string query = "INSERT INTO MaTable(MonChamps) VALUES(" + d + ")";

J'ai l'impression que le problème vient de la ligne 1 car lorsque
j'initialise la chaîne s à "34.23" (ce qui me semble cohérent pour un
decimal), j'obtiens une l'erreur de compilation suivante :
System.FormatException: Le format de la chaîne d'entrée est incorrect.

Par avance, je vous remercie pour vos idées !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
thierry.bip
Le #19446071
Salut,

Ton problème ne viendrait pas plutot de la 3ème ligne ?
3: string query = "INSERT INTO MaTable(MonChamps) VALUES(" + d + ")";

pour concaténer la chaine, .Net fait un "ToString()" sur ton double. Le
résultat doit être une chaine avec une virgule comme séparateur de décimal.

Regarde si ToString() ne prendrait pas un paramètres pour que tu ais un "."
comme séparateur de décimal.

@+
-Thierry-




"Olivier" news:
Bonjour,

Je travaille sur une interface ASP .NET contenant plusieurs TextBox.
L'utilisateur doit saisir des valeurs décimales dans certaines TextBox.
Les
données sont ensuite envoyées dans une table SQL Server.

Le problème que je rencontre est le suivant : l'utilisateur saisit une
valeur mais l'insertion dans la base ne fonctionne pas car le séparateur
"."
est systématiquement remplacé par "," (vérification via SQL Server
Profiler).

J'ai tenté de faire un Convert, un Parse, de modifier les paramètres de
globalisation via la classe CultureInfo, d'apporter une modification au
niveau du fichier de configuration avec l'élément globalization et de
modifier tout un tas de paramètres mais rien n'a résolu mon problème.

Voici un extrait du code (version avec une conversion classique) qui pose
problème :

1: string s = "34,23";
2: decimal d = Convert.ToDecimal(s);
3: string query = "INSERT INTO MaTable(MonChamps) VALUES(" + d + ")";

J'ai l'impression que le problème vient de la ligne 1 car lorsque
j'initialise la chaîne s à "34.23" (ce qui me semble cohérent pour un
decimal), j'obtiens une l'erreur de compilation suivante :
System.FormatException: Le format de la chaîne d'entrée est incorrect.

Par avance, je vous remercie pour vos idées !


Fred
Le #19447341
in news:, Olivier
wrote :

Bonjour,



Bonjour,

Je travaille sur une interface ASP .NET contenant plusieurs TextBox.
L'utilisateur doit saisir des valeurs décimales dans certaines
TextBox. Les données sont ensuite envoyées dans une table SQL Server.



[...]

Voici un extrait du code (version avec une conversion classique) qui
pose problème :

1: string s = "34,23";
2: decimal d = Convert.ToDecimal(s);
3: string query = "INSERT INTO MaTable(MonChamps) VALUES(" + d + ")";



Utilise des paramètres. Surtout dans ton cas.
Il suffit de saisir un nombre suivi d'un point virgule dans le textbox
pour pouvoir exécuter n'importe quelle requête sur ton serveur.
2;DELETE MaTable

string query = "INSERT INTO MaTable(MonChamps) VALUES(@V)";
cmd.Parameters.AddWithValue("@V", d);

Il est même préférable d'instancier un paramètre du bon type et de la
bonne taille plutôt que d'utiliser le AddWithValue.

Les paramètres résolvent les problèmes des caractères spéciaux, des
différences de format internationaux et évitent l'injection de code SQL.

--
Fred

Publicité
Poster une réponse
Anonyme