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 :

formatage de données


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    iam
    iam est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 197
    Par défaut formatage de données
    bonjour tout le monde,
    excusez moi les amis car j'ai déjà poser ce pb, mais je n'arrive pas à trouver une solution,
    bon, j'ai un stringgrid, je formatte chaque cellule après sa validation en float avec : Floatformat('#,0.#0',strtofloat(cells[col,row]));
    pour un souci d'affichage seulement.
    par exemple : j'entre dans une celulle le texte suivant :1253000, après que je passe à la cellule suivante, j'obtiendrai dans la cellule précédente le texte suivant : 1 253 000,00 en appliquant la fonction précédente ok.
    donc j'arrive à afficher le contenu de mes cellules comme des montants (car c'est des prix qu'elles contiennent) jusqu'à là c'est bon.

    quand je termine la saisie de mon stringgrid, je veux insérer son contenu dans une table avec une requette d'insertion, les types des champs qui vont recevoir le contenu des cellules est float,
    donc lorsque je passe les parametres je doit transformer avec
    strtofloat(cells[col,row]), c'est à ce niveau là que je me bloque car la cellule est frmatée (ex:1 253 000,00 ) il m'affiche l'erreur suivante :
    (1 253 000,00 n'est une valeur en virgule flottante correcte).
    j'ai besoin de rendre ma cellule en format normale avant je passe son contenu au parametre de la requete d'insertion,
    est ce qu'il existe une fonction ou un moyen de faire ça, c'est ç dire enlever le formatage précédent des cellule.
    merci de votre attention

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Je suggére une solution légérement différente :
    - laisser dans les cellules la valeurs saisies (12530000),
    - utiliser l'événement OnDrawcell pour afficher le nombre formatté (1 253 000,00).

    Par la même occasion, on peut définir la couleur de fond des cellules.

  3. #3
    Membre confirmé Avatar de maamar1979
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Par défaut
    utilise FormatFloat('0.00',StrtoFloat(cells[x,y]))
    au lieu de FormatFloat('#,0.#0',StrtoFloat(cells[x,y]))

    si ca t'arenge bien sur

    salut.

  4. #4
    Membre Expert 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
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    Je suggére une solution légérement différente :
    - laisser dans les cellules la valeurs saisies (12530000),
    - utiliser l'événement OnDrawcell pour afficher le nombre formatté (1 253 000,00).

    Par la même occasion, on peut définir la couleur de fond des cellules.
    sa sera mieux je pence surtout pour aligné a droite

  5. #5
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    +1 Graffito aussi.

    Surtout si le format change un jour, il n'y a pas à changer la conversion str->float inverse.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Par défaut
    Citation Envoyé par iam
    bonjour tout le monde,
    excusez moi les amis car j'ai déjà poser ce pb, mais je n'arrive pas à trouver une solution,
    bon, j'ai un stringgrid, je formatte chaque cellule après sa validation en float avec : Floatformat('#,0.#0',strtofloat(cells[col,row]));
    pour un souci d'affichage seulement.
    par exemple : j'entre dans une celulle le texte suivant :1253000, après que je passe à la cellule suivante, j'obtiendrai dans la cellule précédente le texte suivant : 1 253 000,00 en appliquant la fonction précédente ok.
    donc j'arrive à afficher le contenu de mes cellules comme des montants (car c'est des prix qu'elles contiennent) jusqu'à là c'est bon.

    quand je termine la saisie de mon stringgrid, je veux insérer son contenu dans une table avec une requette d'insertion, les types des champs qui vont recevoir le contenu des cellules est float,
    donc lorsque je passe les parametres je doit transformer avec
    strtofloat(cells[col,row]), c'est à ce niveau là que je me bloque car la cellule est frmatée (ex:1 253 000,00 ) il m'affiche l'erreur suivante :
    (1 253 000,00 n'est une valeur en virgule flottante correcte).
    j'ai besoin de rendre ma cellule en format normale avant je passe son contenu au parametre de la requete d'insertion,
    est ce qu'il existe une fonction ou un moyen de faire ça, c'est ç dire enlever le formatage précédent des cellule.
    merci de votre attention
    Salut,
    Tu dois aller à Ain El-Kabira W. de Sétif et juste à Ain Touila à coté du Café tu trouveras une personne "M'RABET" avec un grand ordinateur sur sa tete, il peut t'aider je pense.
    j'espère que ma réponse est satisfaisante.

  7. #7
    Membre confirmé Avatar de maamar1979
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Par défaut
    je vien d'essayer comme suit et ca a marcher

    utilise cette fonction (modifier de celle de la derniere fois) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function TForm1.efface_blanc(chaine: string): string;
    var depart : string;
        i : integer;
    begin
    depart:='';
    for i := 1 to length(chaine) do
    begin
    if chaine[i] in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ','] then
    depart:=depart + chaine[i]
    end;
    result:=depart
    end;
    tu l'appel comme suit:

    StrToFloat(efface_blanc(Edit1.text))

    et c'est oki.

    salam

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

Discussions similaires

  1. [MySQL] Formatage des données dans un tableau
    Par dunbar dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/06/2006, 08h52
  2. [VBA-E] Formatage des données à l'ouverture d'un fichier texte
    Par jmercier dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/11/2005, 17h00
  3. [EXCEL] Formatage des données
    Par Cupidon dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/11/2005, 21h32
  4. [Struts] Formatage des données
    Par Biloo dans le forum Struts 1
    Réponses: 6
    Dernier message: 15/09/2005, 12h13
  5. formatage de données en Sorties
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/10/2004, 15h56

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