[C#] comment convertir la virgule en point
michel mukila
-
sebsauvage Messages postés 32893 Date d'inscription Statut Modérateur Dernière intervention -
sebsauvage Messages postés 32893 Date d'inscription Statut Modérateur Dernière intervention -
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.
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:
- [C#] comment convertir la virgule en point
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Point de suite word - Guide
- Convertir epub en kindle - Guide
- Comment inserer une video dans un power point - Guide
- Point de restauration - Guide
2 réponses
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):
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.
- 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.