[C#] comment convertir la virgule en point

Fermé
michel mukila - 9 nov. 2005 à 08:58
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 9 nov. 2005 à 09:58
Bonjour,
je travail en c# en attaquant une base de donnée SQL et j' ai un problème lors de l' enregistrement du caractère point.
(ex: 3547,587 est enregistrer 3547,587) alors que dans une requête il est considere comme fin de champ.
Comment faire pour qu' il m' enregistre dans ma requête 3547.587

Merci d' avance.
A voir également:

2 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
9 nov. 2005 à 09:58
mmm... il faut bien que tu distingue 2 choses:

- le nombre mathématique lui-même.
- sa représentation en fonction d'une culture (3547.587 ou 3547,587).

Le serveur SQL s'en fout, de la représentation du nombre. Lui, il ne stock que le nombre lui-même.


Tu as ce problème de "conversion" car tu créé probablement un ordre SQL à la volée sous forme de chaîne de caractères. Il faut éviter au maximum de faire ce genre de chose.

Tant que c'est possible, il faut utiliser des objets SqlCommand et (idéalement) des procédures stockées.

Il faut alors passer les paramètres dans l'objet SqlCommand.

Exemple (si mavaleur est un flottant):
objCommand.Parameters.Add(new SqlParameter("@monparametre", SqlDbType.Float)); 
objCommand.Parameters["@monparametre"].Value = mavaleur;



Avec cette méthode, tu n'as plus de problème de conversion (puisque tu passe un flottant au serveur SQL, peu importe sa représentation dans une culture ou un autre: c'est juste un nombre.)



Si ta valeur (3547.587 ou 3547,587) vient d'un formulaire web, là il faut faire la conversion texte-->nombre en fonction de la culture de l'utilisateur.
3
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
9 nov. 2005 à 09:54
Salut,
Tu peux utiliser les différentes cultures si c'est un double, si c'est une chaine, tu peux simplement faire un replace...
2