Transfert de données décimal paradox

cs_sirt Messages postés 2 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 15 janvier 2008 - 15 janv. 2008 à 11:27
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 16 janv. 2008 à 21:26
Bonjour

j'ai un petit problème pour insérer un enregistrement contenant un champ numérique.

celui-ci est déclaré en numérqiue dans la base.
lors de la creation je saisie dans un champ text le montant par exemple 12,456

lors de la validation pour la creation je fais
Prix_w : real;
<!-- BEGIN TEMPLATE: bbcode_code -->

Req := 'INSERT INTO Produits';
    Req := Req + (' (id_Produit,cl_produit,Qte_Unite,Prix,id_Categorie)');
    Req := Req + (' VALUES('+QuotedStr(IntToStr(prochain_numero))','+QuotedStr(Edt_clair.text)+',');
   Req := Req + (''+QuotedStr(Edt_Qte.text)+','+QuotedStr(floattostr(prix_w))+','+inttostr(icateg)+')');
 
 <!-- END TEMPLATE: bbcode_code -->Req := 'INSERT INTO Produits';

j'ai cette erreur Différence de type dans une expression
Merci de vos répones A+

2 réponses

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
15 janv. 2008 à 13:05
Ton code n' est pas très clair mais il me semble que l' utilisation de QuotedStr() n' est pas fait pour passer des données numériques à la base de données!
La solution serait d' utiliser simplement IntToStr ou FloatToStr
A+
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
16 janv. 2008 à 21:26
QuotedStr ne doit être utilisé que lorsqu'il y a un rsique qu'une chaine comporte des apostrophes ou des guillemets.
Il ne faut donc pas l'employer systématiquement sur chaque champ surtout quand la base de données s'attend à recevoir des valeurs numériques.
En l'occurrence, comme la valeur flottante est saisie dans un contrôle de type TEdit, il faut convertir une chaine en nombre flottant et c'est la fonction StrToFloat (ou mieux encore : TryStrToFloat) qui devra être appelée.
Tout ceci explique le message d'erreur reçu : différence de type dans une expression.

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
0
Rejoignez-nous