Beluzzo
Messages postés13Date d'inscriptionjeudi 13 octobre 2005StatutMembreDernière intervention 3 juin 2013
-
29 sept. 2009 à 13:46
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
29 sept. 2009 à 17:10
Bonjour tout le monde,
Voilà mon problème ça à l'air assez simple pourtant je dois avouer avoir du mal
Je souhaite effectuer une requete d'update dans une base de donnée sqlserver 2005
en simplifiant ma tabe reprend 3 champs
Id_item : int
Name_item : varchar
Prix : decimal
mon soucis est que lorsque j'effectue une requete sous la forme :
string request "UPDATE Item SET Name_item '" + Name_item + "',Prix = " + Prix + " WHERE Id_item = '" + Id_item + "'";
avec comme variables:
int Id_item = 1
string Name_item = "NomItem"
decimal Prix = 25.33
le soucis est que lors du débuging la valeur de prix est bien 25.33 mais une fois passé à ma requete il se transforme en 25,33 et donc me renvoi une erreur
Je ne comprend pas trop d'où viens cette transformation, j'ai également essayé de le changer en float même problème une fois dans ma requete le "." devient ","
Beluzzo
Messages postés13Date d'inscriptionjeudi 13 octobre 2005StatutMembreDernière intervention 3 juin 2013 29 sept. 2009 à 14:13
Bon ben j'ai trouvé une solution pour contourner ce problème, je dis pas que c'est la meilleure mais le resultat est bon
j'ai modifié le type de mon champ prix en float (car sinon je perdait la virgule, certainement lié à mon programme et une transformation dans celui-ci)
là j'envoi directement une string à ma requete et j'utilise la fonction
Prix = REPLACE('" + Prix + "',',','.') ce qui tranforme ma virgule en point.
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 29 sept. 2009 à 14:22
Le probleme vient du fait que les settings régionaux de machine sont tels que les décimaux sont représentés avec la virgule (format francais), alors que ta DB l'est avec la point(format US). Tu as trois solutions :
1 - changer les settings de ta DB ou de ton OS (pas très fiable)
2 - Lorsque tu passe le prix a ta requete, faire un string.format dessus pour t'assurer que c'est bien un . qui sera utilisés. Fiable mais pas encore top
3 - utiliser les requetes paramétrées (la meilleure solution). Il existe des tutos la dessus. Le mieux reste encore d'utiliser des dataset qui vont gérer tout ca pour toi
Beluzzo
Messages postés13Date d'inscriptionjeudi 13 octobre 2005StatutMembreDernière intervention 3 juin 2013 29 sept. 2009 à 15:44
Salut leprov et merci pour ta réponse.
J'ai effectivement essayé de passer par des requetes paramétrées cependant je dois travailler avec une connexion odbc (hélas) et malgré le fait d'ajouté de "?" il me mettait toujours le même genre d'erreur (impossible de transformer un varchar en float).
Je suppose donc que dans mon cas la solution se trouvait plutôt dans les autres possibilitées que tu as cité.
Merci quand même
Beluzzo
Vous n’avez pas trouvé la réponse que vous recherchez ?