Forcer Access en en-US

Résolu
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 - 26 févr. 2008 à 18:45
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 2 mars 2008 à 00:01
Bonjour,

Je rencontre qq difficultés avec le stockage de nombres flottants dans Access. En effet, je recupère des floats dans des fichiers textes au format anglais (avec un . comme séparateur), puis je les transforme en float dans mon programme en se serveur de float.parse avec une culture en-US.

Problème, quand je veux insérer ces flottants dans Access (que je retransforme en chaine de caractère avec toString() avec un System.Globalization.CultureInfo paramétré en en-US pour créer la requete INSERT INTO), l'insertion plante. Ma base de donnée Access attend des chiffres formattés avec une virgule.

Comment forcer Access à utiliser des flottants en-US? Mon programme doit pouvoir être fiable qq soit le paramétrage de Windows, mettre la "culture" d'Access en anglais corrigerait le problème, mais je n'ai pas trouvé comment faire...

5 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
26 févr. 2008 à 22:12
Rehello,

datarow.Rows["unfloat"] renvoyera un objet de type float.
Le résultat sera le même que si tu as

float f = 2.5;
f.ToString();

En gros, ça va dépendre des settings local du PC sur lequel est exécuté l'application, sauf si tu le rpécise autrement.
En général, c'est ce qu'on veut. Ca permt à l'utilisateur de travailler avec les format qu'il connnaît, et ça nous permet à nous programmeur de ne pas s'occuper de ces formats.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
3
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
26 févr. 2008 à 20:32
Hello,

En utilisant desrequêtes paramétrées, tu n'auras pas ce genre de problèmes.
Tu pouras passer des valeur de types float ou DateTime sans passer par des string, et donc sans te soucier de leur format.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
26 févr. 2008 à 21:55
Effectivement ca marche en insertion, mais un doute subsiste pour la reception des données, je ne sais pas ce que je vais recuperer dans datarow.Rows["unfloat"].ToString(). Un nombre avec un point ou avec une virgule?
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 mars 2008 à 23:59
Salut,

"datarow.Rows["unfloat"] renvoyera un objet de type float"

Attention !
Ne pas fair confiance aux noms des types entre 2 technos.
Ici, d'après la doc Access, voici la définition du float :
"A double-precision floating-point value with a range of – 1.79769313486232E308 to – 4.94065645841247E-324 for negative values, 4.94065645841247E-324 to 1.79769313486232E308 for positive values, and 0."

Bref, c'est la même chose qu'avec SQL Server : un float Access se bind avec un Double .NET, pas un Single (float).

/*
coq
MVP Visual C#
CoqBlog
*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
2 mars 2008 à 00:01
Et à part ça le formatage d'une chaine à partir d'un type float ne dépend pas du SGBD mais de la culture du code .NET en lui même.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous