System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.

Signaler
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Bonsoir!!

Voila j'ai un petit probléme, je dois rentrer une valeur decimal dans une combo, puis l'enregistrer dans une base de donnée
Le probléme quand je rentre la valeur decimal, par exemple 1.3 quand je debeud dans ma requete cette valeur change par 1,3
or SQL n'accepte  pas la les nombres a virgule.
Par contre j'ai éssayé  System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
Ma valeur 1.3 a été remplacer par .
Quelqu'un a une idée? merci d'avance.

11 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Salut,

Je ne suis pas sûr de bien saisir là.
Tu as une valeur décimale (stockée dans quel type ?) et tu l'enregistres en base de donnée, mais dans la requête elle apparait sous la forme "1,3" => tu n'utilises pas de requêtes paramétrées ?

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

Bonjour!!
En fait dans mon formulaire meme si je rentre un nombre decimal par (5.7)
quand j'essais de l'enregistrer dans ma table, et je mets un point d'arret sur ma requete, dans l'enregistrement j'ai pas la valeur inserer c'est a dire 5.7, plutot 5,7 les vameurs a virgule SQL ne les prend pas en compte .
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Et ta requete est batie comment ?

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

J'utilise SQL2005
"INSERT INTO "+ table.TableName +

  "VALUES (table.Rows[0][
"StrNoSiret"] +
"','" + table.Rows[0][
"IntNoTarif"] +
"','" + (table.Rows[0][
"DecTauxDeRemiseMaxi"]) +
"','" + table.Rows[0][
"StrNomConducteurDeTravaux1"] +
"','" + table.Rows[0][
"StrTélConducteurDeTravaux1"] +
"','" + table.Rows[0][
"StrNomConducteurDeTravaux2"] +
"','" + table.Rows[0][
"StrTélConducteurDeTravaux2"] +
"','" + table.Rows[0][
"StrNomConducteurDeTravaux3"] +
"','" + table.Rows[0][
"StrTélConducteurDeTravaux3"] +
"','" + table.Rows[0][
"StrNomConducteurDeTravaux4"] +
"','" + table.Rows[0][
"StrTélConducteurDeTravaux4"] +
"','" + table.Rows[0][
"ClientPayeurID"] +
"','" + table.Rows[0][
"familleDeClientsID"] +
"','" + table.Rows[0][
"représentantID"] +
"');";

la requette n'a pas de probléme ,c'est dans mon formulaire quad je rentre un nombre a un point , dans ma requette j'obtient le mm nombre par contre le point a été remplacer par une virgule.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Si, ta requête à un problème : tu injectes tes données dedans à coup de concaténation de chaine.
Déjà c'est peut maintenable, tu aurais dû utiliser String.Format, beaucoup plus lisible.
Ensuite je suppose que la colonne en question est numérique en base, donc utilises une requête paramétrée et laisse le provider se débrouiller avec le type numérique que tu lui passes en valeur du paramètre.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
3
roo oui elle est vilaine cette requête :p lol
et puis ce serait peut etre mieux de mettre le nom des colonnes de la table :

INSERT INTO [nomtable] ([StrNoSiret],[
IntNoTarif])
VALUES (?,?);

>(j'ai pas tout mis (fainéant))

je n'ai pas vu si c'est pour SQL Server ou Access ou autre

OleDbParameter
http://msdn2.microsoft.com/fr-fr/library/system.data.oledb.oledbparameter(VS.80).aspx

SqlParameter
http://msdn2.microsoft.com/fr-fr/library/system.data.sqlclient.sqlparameter.aspx
+
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

Bonjour !!!
 j'ai trouvé , c'est plus simple que ça.Il fallait juste faire
'" + (table.Rows[0]["DecTauxDeRemiseMaxi"].ToString().Replace(',', '.')) + "' et ça marche nikel
Merci a plus
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Ok...... Bon courage quand quelqu'un avec d'autres paramètres régionaux utilisera ton application... et surtout quand quelqu'un aura découvert le problème de sécurité.

Petite note pour ceux qui passeraient par ici plus tard, la solution "plus simple" qui vient d'être citée n'est naturellement pas à adopter : vive les requêtes paramétrées.

http://fr.wikipedia.org/wiki/Injection_SQL
http://msdn2.microsoft.com/fr-fr/library/ms161953.aspx
http://msdn2.microsoft.com/fr-fr/library/hdb58b2f(VS.80).aspx

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Rhalala le bricoleur!

<hr />
-Blog-
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

lol, en fait pur les sources on n'en a parler vendredi , se sont des sources ke j'ai trouvé sur ce site et d'autres que je bricole, finalement je les mets.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Passant ici par hasard (après une recherche), je mets un lien qui pourra être utile au suivant...
http://www.csharpfr.com/tutoriaux/UTILISATION-REQUETES-PARAMETREES-AVEC-ADO-NET_709.aspx

<hr />
-My Blog-