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

Langage Delphi Discussion :

format du champs d'une advdbgrid


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut format du champs d'une advdbgrid
    bonsoir,
    j'ai une grille(advdbgrid) liée a un query,ce query contient un champs de type float(solde)
    et j’ai fais dans la propriété display format de ce champs
    #,###,##0.00

    Solde
    -------
    1000,00
    500,04
    0,00
    3000,25
    0,00
    2000,00



    Je veux que si j’ai une valeur(solde=0,00) dans la champs n’affiche rien dans la grille

    Comme ca

    Solde
    ------
    1000,00
    500,04

    3000,25

    2000,00


    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 563
    Points : 25 165
    Points
    25 165
    Par défaut
    Utilise le OnGetText du TField et tu teste à zéro pour renvoyer une chaine vide

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    bonjour
    merci shailetroll,mais j'ai jamais travaillé avec ce evenement,j'ai fais ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TDataModule_compta.Query_consulter_lettrageMVT_N_DEBITGetText(
      Sender: TField; var Text: String; DisplayText: Boolean);
    begin
    if Text='0,00' then
    text:='';
    end;
    dans l'evenement onGetText de tfield mais il n'affiche rien dans le champs meme si la valeur<>0 il donne tjr la valeur vide

    aidez moi svp et merci

  4. #4
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Je pense qu'il faut tester la valeur de TField mais pas Text.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TDataModule_compta.Query_consulter_lettrageMVT_N_DEBITGetText(
      Sender: TField; var Text: String; DisplayText: Boolean);
    begin
      if (((Sender as TField).FieldName = 'COL_SOLDE') and  
          ((Sender as TField).AsFloat = 0)) then
      begin
        Text := '';
        DisplayText := '';
      end;
    end;

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 563
    Points : 25 165
    Points
    25 165
    Par défaut
    Comme l'évènement est affecté directement à un TField normalement, il n'est pas nécessaire à vérifier


    Sinon le code doit être plutôt cela, car il faut soit même affecter la valeur (ce n'est pas indiqué dans l'aide, voir le code de TField.GetDisplayText dans DB.pas, cela aurait pu être du out au lieu du var ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TDataModule_compta.Query_consulter_lettrageMVT_N_DEBITGetText(
      Sender: TField; var Text: String; DisplayText: Boolean);
    begin
      if DisplayText and (Sender.AsFloat = 0) then
         Text := ''
      else
         Text := Sender.AsString;
    end;
    je n'utilise pas l'IDE, je l'affecte manuellement, car je n'ai pas de DataModule, mes Query étant créé à la volée ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query_consulter_lettrage.FieldByName('MVT_N_DEBIT').OnGetText := DisplayEmptyOnZero;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TDataModule_compta.DisplayEmptyOnZero(
      Sender: TField; var Text: String; DisplayText: Boolean);
    begin
      if DisplayText and (Sender.AsFloat = 0) then
         Text := ''
      else
         Text := Sender.AsString;
    end;

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    merci pour vous,j'essayé votre code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if DisplayText and (Sender.AsFloat = 0) then
         Text := ''
      else
         Text := Sender.AsString;
    et il me donne a la place de ca

    table avant votre code
    Solde
    -----
    1000,00
    500,04
    0,00
    3000,25
    0,00
    2000,00


    et aprés le code il me donne ca


    Solde
    -------
    1000
    500,04

    3000,25

    2000


    mais moi ce que je veux que ma grille affiche ca


    Solde
    -------
    1000,00(voir ici)
    500,04

    3000,25

    2000,00(ici)


    c'est a dire si j'ai une valeur(2000) il doit l'afficher comme ca(2000,00)

    merci bcp

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 563
    Points : 25 165
    Points
    25 165
    Par défaut
    forcément puisque OnGetText détourne DisplayText qui utilise le DisplayFormat...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      if DisplayText and (Sender.AsFloat = 0) then
         Text := ''
      else
         Text := FormatFloat(TNumericField(Sender).DisplayFormat, Sender.AsFloat);

  8. #8
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Salut.
    Si tes champs sont persistants, il suffit de modifier le displayformat directement depuis la liste de champs de ton query.
    J'ai tésté #,###,###.## et ça marche bien.
    Ou bien par code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Query_consulter_lettrageMVT_N_DEBIT.DisplayFormat := '#,###,###.##'
    A+

  9. #9
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Citation Envoyé par Andry Voir le message
    Salut.
    Si tes champs sont persistants, il suffit de modifier le displayformat directement depuis la liste de champs de ton query.
    J'ai tésté #,###,###.## et ça marche bien
    Ca ne serait pas plutôt
    ?
    La virgule indiquant qu'on utilise le séparateur de milliers, tandis que le point-virgule sépare les 3 sections positif;négatif;nul

  10. #10
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Citation Envoyé par rsc Voir le message
    Ca ne serait pas plutôt
    ?
    La virgule indiquant qu'on utilise le séparateur de milliers, tandis que le point-virgule sépare les 3 sections positif;négatif;nul
    Ouii, c'est ça même. Mais comme lui, il veut un vide si c'est à zero donc, on utilise # à la place des 0. Tu peux aussi tester pour voir.

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    bjr a ts,
    merci bcp bcp pour vous
    j'ai essayé votre code et ca marche b1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if DisplayText and (Sender.AsFloat = 0) then
         Text := ''
      else
         Text := FormatFloat(TNumericField(Sender).DisplayFormat, Sender.AsFloat);
    et mnt le probléme est resolé
    merci pr votre aide

Discussions similaires

  1. Réponses: 20
    Dernier message: 17/12/2015, 11h54
  2. Champs d'une requete sous un Format 7 caracteres
    Par mat_lefebvre dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/02/2007, 14h00
  3. Modif. Format de champ.txt avec une requête
    Par Gias Service dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 04/07/2006, 18h10
  4. Réponses: 7
    Dernier message: 26/05/2006, 19h45
  5. Changer le format d'un champ d'une table
    Par Cablan dans le forum Access
    Réponses: 2
    Dernier message: 14/12/2005, 13h07

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