IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Transfert d'un numérique avec chiffres apres la virgule


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Points : 69
    Points
    69
    Par défaut Transfert d'un numérique avec chiffres apres la virgule
    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;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
           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)+')');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Req := 'INSERT INTO Produits';
         //  Req := Req + (' (id_Produit,cl_produit,Qte_Unite,Prix,id_Categorie)');
             Req := Req + (' (id_Produit,cl_produit,Qte_Unite,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)+')');
             Req := Req + (''+QuotedStr(Edt_Qte.text)+','+inttostr(icateg)+')');
    ici l'erreur a l'exécution

    Différence de type dans une expression

    Merci de votre aide
    A+

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Points : 69
    Points
    69
    Par défaut
    Je précise table paradox et je suis en delphi 5
    merci

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    C'est simplement un problème de séparateur décimal. Ta table Paradox attend un point (.) alors que tu lui envois une virgule (,).

    Si prix_w est un TEdit comme je le suppose, il te suffit de substituer la virgule par un point au moment de la saisie.

    @+ Claudius

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Points : 69
    Points
    69
    Par défaut
    BONJOUR
    Merci de votre réponse je viens de tester mais là j'ai une autre erreur

    12.45 n'est pas une valeur en virgule flotante correcte
    A+

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    prix_w est bien un TEdit ?

    Si oui, inutile d'utiliser FloatToStr car le TEdit te renvoie un texte.
    Inutile également d'utiliser QuotedStr, puisque les valeurs numériques ne sont pas transmises entres quotes.

    @+ Claudius

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Points : 69
    Points
    69
    Par défaut
    prix_w est déclaré real;
    priw_w := strtofloat(edt_prix.text);

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Essaye quelque chose comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    procedure TForm1.edt_prixKeyPress(Sender: TObject; var Key: Char);
    begin
      // Forcer le séparateur décimal en usage
      if Key in [',', '.'] then Key := DecimalSeparator;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      prix_w: Currency;
      SaveDecSep: Char;
      Req: string;
    begin
      if not TryStrToCurr(edt_prix.Text, prix_w) then
        ShowMessage('Montant saisi incorrect !')
      else begin
        SaveDecSep := DecimalSeparator;
        DecimalSeparator := '.';
     
        try
          Req := 'INSERT INTO Produits ';
          Req := Req + ('(id_Produit, cl_produit, Qte_Unite, Prix, id_Categorie) ');
          Req := Req + ('VALUES('+ IntToStr(prochain_numero) + ','+
                                   QuotedStr(Edt_clair.text)+ ',' +
                                   QuotedStr(Edt_Qte.text)+ ',' +
                                   FloatToStr(prix_w))+ ',' +
                                   IntToStr(icateg)+')');
          // ...  Exécuter requête
        finally
          DecimalSeparator := SaveDecSep;
        end;
      end;
    end;
    @+

  8. #8
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par Chonchon Voir le message
    BONJOUR
    Merci de votre réponse je viens de tester mais là j'ai une autre erreur

    12.45 n'est pas une valeur en virgule flotante correcte
    A+
    aller à option régional et modifier leséparateur à '.'
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

Discussions similaires

  1. [Débutant] afficher valeurs numériques avec deux chiffres après la virgule
    Par bahja29 dans le forum MATLAB
    Réponses: 4
    Dernier message: 07/04/2009, 11h48
  2. calcule de PI avec nombre préci de chiffres aprés la virgule!
    Par do_key_120 dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 17/10/2007, 22h58
  3. Réponses: 5
    Dernier message: 19/06/2007, 08h59
  4. Réponses: 3
    Dernier message: 10/02/2006, 15h31
  5. Pourcentage avec deux chiffres après la virgule
    Par Oluha dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/03/2005, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo