bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 2009
-
26 févr. 2008 à 18:45
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDerniè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...
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 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)
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 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)
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 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?
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 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).