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

Composants VCL Delphi Discussion :

Pb d'affichage dans une stringGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut Pb d'affichage dans une stringGrid
    Bonjour à tous

    J'ai un Problème d'affichage dans une grille sur un seule colonne et je bute dessus depuis un certain temps

    J'utilise une base de données Sqlite pour faire la gestion d'un petit compte bancaire.
    J'ai implémenté un menu statistique avec trois Stats possibles
    1-Stats par catégories
    2-Stats par Tiers
    3-Stats par Types

    Results pour Stats par Catégories
    Nom : EcranCategories.jpg
Affichages : 174
Taille : 180,2 Ko

    ici tout est OK

    Seule les stats par Tiers me pose problème lors de l'affichage de la colonne des Dépenses
    Nom : EcranResultats.jpg
Affichages : 170
Taille : 141,3 Ko

    J'ai testé ma requête tout est OK
    Nom : RequeteTiers.jpg
Affichages : 175
Taille : 171,9 Ko

    J'ai donc tendance à penser que c'est un Pb d'affichage au niveau de la Grille

    Au niveau de ma grille j'utilise une advStringGrid de chez TMS
    J'ai essayé aussi avec la StringGrid du logiciel même PB

    Avez vous une idée ?

    Par avance Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    La cause : le fait que ces données sont des colonnes calculées (SUM) fournissant un type de colonnes, tiens je vais vérifier ce qui est fourni car je n'en sais rien

    Solution la plus facile, déclarer les champs de la query (en profiter pour indiquer un format d'affichage 0.00)

    Solution plus complexe passera par les options de la fdQuery, les utilisant rarement je suis moins sûr de moi sur ce coup là !
    trois pistes :
    • le mappage
    • le BCD
    • le format de sortie


    Nom : Capture.PNG
Affichages : 165
Taille : 17,5 Ko

    Le mappage, j'avais écrit un truc dans un des posts du forum en réponse à papy214 ( ça fait un bail que j'ai pas remis le nez dedans)
    le BCD, j'ai jamais vraiment compris
    le format de sortie (formats de champ par défaut), jamais essayé

    Tout retour sur cette dernière solution sera bienvenu
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    tiens je vais vérifier ce qui est fourni car je n'en sais rien
    Mon essai n'a pas été vraiment concluant, il faudrait savoir quels sont les types de colonnes Debit, Credit ? Généralement je déclare ce genre de colonne en NUMERIC(10,2), je n'ai pas vu le problème.
    la colonne est aussi un ftFloat.

    format de sortie (formats de champ par défaut), jamais essayé
    ça j'ai essayé en indiquant 0.00 et du coup, drôles de choses !
    en effet j'avais une requête classique select compte_id, sum(montant) as total from ecritures group by compte_idcompte_id type integer, montant numeric(10.2)
    hé bien les deux colonnes se sont dessinées avec deux chiffres après la virgule !
    En fait la déclaration de champ prend ce format indiqué en option.

    Conclusion : utiliser avec avec prudence

    Citation Envoyé par gegila
    Au niveau de ma grille j'utilise une advStringGrid de chez TMS
    pas une dbadvgrid ? hum comment l'advstringgrid est rempli alors ?
    de même quelle version de SQLite, de Delphi et des composants TMS ?
    Je trouve étrange de voir des points et non la virgule pour les décimales
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    euh... 4.6401677676333E18 à la place de 169,5 me fait penser que ce n'est pas juste un problème de format
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Merci pour vos réponses

    les Depenses et Recettes sont déclarées en NUMERIC(7,2) dans la base
    Ce qui me frappe le + c'est que le phénomène se produit uniquement lors des Stats sur le champ Tiers
    alors que les stats sur les autres champs categories et Types marchent sans probèmes

  6. #6
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    pas une dbadvgrid ? hum comment l'advstringgrid est rempli alors ?
    Autant pour moi c'est bien une DBadvGrid que j'utilise

    de même quelle version de SQLite, de Delphi et des composants TMS ?
    Version Delphi Sydney 10.4.1 et les composants TMS :TMS VCL-UI Pack-10-2019
    Mais comme dit plus haut j'ai aussi essayé avec le composant DbGrid de Delphi = même PB

    Je trouve étrange de voir des points et non la virgule pour les décimales
    Je force le point comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.SysUtils.FormatSettings.DecimalSeparator := '.';

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    OK, je me doutais bien que c'était une DBadvGrid et que le point comme marqueur décimal était forcé *.
    * le format décimal forcé de cette manière, j'évite. Il me semble qu'il est plus recommandé de créé un TFormatSettings pour l'appliquer mais avec VCL ... je ne me souviens plus.

    Bon, comme l'écrit Paul
    Citation Envoyé par Paul Toth
    4.6401677676333E18 à la place de 169,5 me fait penser que ce n'est pas juste un problème de format
    Il y a certainement anguille sous roche

    La solution simple de déclaration de champ et de format d'affichage va applanir ça toutefois c'est étrange. Supprimer et recrér la query y fait quelque chose ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Merci Serge et Paul pour vos réponses

    J'ai trouver la solution en changeant le Query et surtout

    en AggregateActive:=True

    et cela fonctionne

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par gegila Voir le message
    et surtout
    en AggregateActive:=True
    Je n'ai jamais utilisé ça ! D'un autre côté je n'utilise MySQL qu'en test (sur un backup d'une BDD prestashop) donc je n'ai jamais vu cette propriété
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Pour Info Serge
    Sur le TFDQuery voila la propriété
    Nom : CaptureFDQuery.jpg
Affichages : 142
Taille : 72,6 Ko

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Merci, je n'ai jamais regardé ça.
    Je ne crois pas que cela s'applique dans le contexte où l'on utilise un aggregat dans la requête.
    Il faut que j'investigue plus avant, mais je pense qu'il s'agit un peu comme des champs calculés ajoutés à la déclaration de champs.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    si la "Query" te ramène un valeur fausse c'est peut être due au faite que tu as des valeur nulle dans cette zone
    de façon general une sommation dans une query ne devrais jamais avoir d'erreur

    pour palier aux valeurs nulles tu peut aussi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(coalesce(MavAleur,0))
    de plus un group by doit reprendre les element de ton entête
    dans ton cas cela devrais etre
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select IdCpt,DateEnregistrement,Tiers , Sum(...
    from DetailsCpt
    Where IdCpt =1 
    group by IdCpt,DateEnregistrement,Tiers
    order by  DateEnregistrement
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  13. #13
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Bonjour Anapurna

    pour palier aux valeurs nulles tu peut aussi faire
    Ok cela me semble mieux pour cela

    Par contre :
    de plus un group by doit reprendre les éléments de ton entête
    dans ton cas cela devrais être
    Oui mais dans mon cas je veux que ma Statistique se fasse par Tiers c'est pour cela que je ne reprend que le champ Tiers

    Dans ma saisie d'opérations bancaires : pour le même Tiers (sur période donnée) je peux avoir plusieurs opérations a des dates différentes et je veux donc en faire la somme.

  14. #14
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    Citation Envoyé par gegila Voir le message
    Bonjour Anapurna


    Ok cela me semble mieux pour cela

    Par contre :

    Oui mais dans mon cas je veux que ma Statistique se fasse par Tiers c'est pour cela que je ne reprend que le champ Tiers

    Dans ma saisie d'opérations bancaires : pour le même Tiers (sur période donnée) je peux avoir plusieurs opérations a des dates différentes et je veux donc en faire la somme.
    dans ce cas ta requête devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select Tiers , Sum(...)...
    from DetailsCpt
    Where IdCpt =1 
    group by Tiers
    order by  Tiers
    le principale étant de savoir ce que tu as besoins comme élément clé
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

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

Discussions similaires

  1. Ne rentrer que des chiffes dans une stringgrid
    Par rvzip64 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/08/2005, 11h06
  2. recherche solution pour affichage ds une StringGrid....
    Par steph_1 dans le forum Composants VCL
    Réponses: 13
    Dernier message: 13/07/2005, 13h24
  3. [iframe]pb d'affichage dans une iframe
    Par Destampy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/06/2005, 14h55
  4. affichage dans une boite de texte en fonction d'un choix
    Par bachilbouzouk dans le forum ASP
    Réponses: 3
    Dernier message: 19/04/2005, 14h53
  5. [mfc] affichage dans une boite de dialog
    Par chronos dans le forum MFC
    Réponses: 3
    Dernier message: 14/06/2004, 15h12

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