Transfert de données décimal paradox

Signaler
Messages postés
2
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
15 janvier 2008
-
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
-
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

Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
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+
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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/