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

 Delphi Discussion :

Problème de flottant entre delphi et sql server


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2006
    Messages : 279
    Points : 99
    Points
    99
    Par défaut Problème de flottant entre delphi et sql server
    Bonjour à tous;
    J'ai un champ de type float(8) dans la table de ma base de données sql server, je mappe sur cette table avec un adoQuery donc je reçois un field de type TFloatField, donc quand je tape une valeur pour ce champ dans le form j'obtiens une valeur avec comme valeur de flottant une virgule (1,5 par exemple ) ce qui pose alors un conflit avec la base de donnée en effet ce champ doit avoir une valeur avec un point (1.5).

    J'ai essayé de résoudre ce problème en mettant: DecimalSeparator := '.' ;
    Mais y a t-il un autre moyen plus pertinent pour ce faire?


    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut le plus simple
    salut Zanoubya le plus simple , je joue sur l'événement OnKeyPress de mon Edit.text quanq tu y entre une somme que tu appuis sur la touche (,) ou (.) tu auras toujours le point (.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TCotisation.MontantKeyPress(Sender: TObject; var Key: Char);
    begin
      if Key='.' then Key := ','; //ici tu remplaces . par virgule tu peux inversé
     
    //ici si tu ne veux que des chiffres dans ton Edit.text 
        if not (Key in ['0'..'9', DecimalSeparator, Chr(VK_BACK), Chr(VK_DELETE)]) then
      Key := #0;
      if Key = DecimalSeparator then
        if Pos(DecimalSeparator, Montant.Text) <> 0 then
          Key := #0;
    //fin que des chiffres
    end;
    voila j'espère t'avoir aider car tu es le premier à qui je peux donné un coup de main

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Tu utilise un TEdit ou TDBEdit ?
    Comme provoque tu la mise à jour ? Append\Edit\Post ou SQL INSERT\UPDATE ?
    Normalement les composants DB gère cela naturellement, il n'y a que dans le cas de SQL manuel que l'on a ce genre d'erreur,
    Voir les Requêtes paramètrées qui évite le problème de conversion manuelle aussi !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2006
    Messages : 279
    Points : 99
    Points
    99
    Par défaut
    Bonjour;
    J'utilise un DBEdit et l'adoquery est en mode update.
    C'est pour ca je trouve ce comportement un peu bizarre car adoquery s'occupe de toutes ces contraintes

  5. #5
    Membre habitué Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Points : 197
    Points
    197
    Par défaut
    Essaye avec cette variable globale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DecimalSeparator := '.' ;

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    ton champ est bien lié à un FloatField (et non StringField), c'est assez problématique.
    La conversion , en . doit être gérée que si l'on fait manuellement ses requêtes ...
    J'avoue ne pas aimer Edit\Post, je préfère controler les SQL qui passe

    As-tu modifié DisplayFormat ou autre élément ?

    Essaye de Gérer le BeforePost pour vérifier ton élément, j'ai des souvenirs avec ADO et Oracle d'avoir du manuellement forcé des format de date ... et l'erreur était impensable genre "erreur durant opérations en plusieurs étapes"

    Modifier la constante DecimalSeparator, c'est juste dangereux !
    Cela peut entrainer plein d'autres problèmes ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2006
    Messages : 279
    Points : 99
    Points
    99
    Par défaut
    Bonjour;
    voilà c'est bien géré Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/10/2014, 13h19
  2. [WD12] probléme de date entre WD12 et SQL server 2005
    Par Bassemca dans le forum WinDev
    Réponses: 5
    Dernier message: 19/12/2008, 21h27
  3. probléme entrée interface microsoft sql server 2005
    Par ess2007 dans le forum Administration
    Réponses: 2
    Dernier message: 01/07/2008, 17h03
  4. Comment connecter entre delphi et sql server ?
    Par DJERDJAR YACINE dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2007, 10h33
  5. Problème de format entre Windev et SQl Server
    Par rphenix dans le forum WinDev
    Réponses: 7
    Dernier message: 20/06/2007, 09h36

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