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 !
Voici une méthode que j'utilise depuis des année pour faire des
insertion sql de double :
/// <summary>
/// Formater un double pour qu'il soit conforme à la norme SQL
/// </summary>
/// <param name="vValue"></param>
/// <returns></returns>
/// <remarks></remarks>
static public string FormaterDouble(Double vValue)
{
return String.Format(
"'{0}'",
vValue.ToString().Replace(",", "."));
}
Comme tu peux le voir ça peut sembler un peu violant mais le dispositif
consiste à remplacer le sé¶teur décimal et à mettre la valeur à
insérer entre deux '. Et te coila avec une valeur qui passe à tout les
coups.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Voir par exemple :
http://webman.developpez.com/articles/aspnet/sqlparameter/csharp/
--
Patrice
"Olivier" <Oli...@discussions.microsoft.com> a �crit dans le message de
groupe de discussion : F2845BDF-FEE9-4F3A...@microsoft.com...
> 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 !
La solution via une requête paramétrée me semble plus appropriée pour les
raisons citées par Patrice mais je garde également la solution Jérémy en
stock.
Merci à tous les deux !