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

WinDev Discussion :

couleur de fond d'une cellule ou d'une ligne [WD17]


Sujet :

WinDev

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Points : 163
    Points
    163
    Par défaut couleur de fond d'une cellule ou d'une ligne
    Bonsoir,
    j'ai une table qui contient la liste de mon stock actuel, je souhaiterai que quand la quantité minimal est atteinte , le champ "Qte" ou la ligne de la table soit marqué en rouge :
    j'ai tenté le code suivant mais il me colorie toute la colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    POUR TOUTE LIGNE DE TABLE_StockActuel
    	REQ_QteMini.pReference=TABLE_StockActuel.COL_Reference
    	HExécuteRequête(REQ_QteMini)
    	POUR TOUT REQ_QteMini 
    	SI TABLE_StockActuel.COL_QteEnStock<REQ_QteMini.QteMini ALORS								
    		TABLE_StockActuel.COL_QteEnStock..CouleurFond = RougeClair
    	FIN
    	FIN
        FIN
    la requete "REQ_QteMini" me renvoi la valeur du stock minimal toléré du produit, qui est danrs un fichier a part, ensuite je compare cette valeur avec la quantité de stock de ma table, si la quantité est inférieur ou égale, j'affiche la ligne en rouge. comme faire ?
    je fais ça pour toute les ligne du tableau, est ce que le traitement ne sera pas plus long quand j'aurai de plus grande ligne a géré ?

    Merci.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 91
    Points : 136
    Points
    136
    Par défaut
    bonjour

    mettre le code dans "affichage d'une ligne de la table" en faisant le traitement pour la ligne => l'indice à tester est TABLE_StockActuel dans ce traitement

    pour la couleur de fond rajouter l'indice de la table :
    TABLE_StockActuel.COL_QteEnStock[TABLE_StockActuel]..CouleurFond = RougeClair


    pour de meilleures performances le mieux est de créer une requete qui regroupe toutes les données même celles calculées et de baser la table sur cette requete

    bon devs

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Points : 163
    Points
    163
    Par défaut
    Bonjour,

    Merci digi12 pour votre réponse;
    voila ce que j'ai mis dans "affichage d'une ligne de la table" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    REQ_QteMini.pReference=TABLE_StockActuel.COL_Reference
    HExécuteRequête(REQ_QteMini)
    POUR TOUT REQ_QteMini 
    	SI TABLE_StockActuel.COL_QteEnStock<REQ_QteMini.QteMini ALORS								
    		TABLE_StockActuel.COL_QteEnStock[TABLE_StockActuel]..CouleurFond = RougeClair
    	FIN
    FIN
    pour la requête elle ne contient qu'un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 
    	Produit.QteMini AS QteMini
    FROM 
    	Produit
    WHERE 
    	Produit.Reference = {pReference}
    ça marche très bien en ce moment.
    est ce qu'il y a un moyen d'optimiser plus les performance, de peur de voir le traitement se ralentir quand il y'aura plein de ligne dans la table.

    Merci.

  4. #4
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Citation Envoyé par labib23dz Voir le message
    Bonjour,

    Merci digi12 pour votre réponse;
    voila ce que j'ai mis dans "affichage d'une ligne de la table" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    REQ_QteMini.pReference=TABLE_StockActuel.COL_Reference
    HExécuteRequête(REQ_QteMini)
    POUR TOUT REQ_QteMini 
    	SI TABLE_StockActuel.COL_QteEnStock<REQ_QteMini.QteMini ALORS								
    		TABLE_StockActuel.COL_QteEnStock[TABLE_StockActuel]..CouleurFond = RougeClair
    	FIN
    FIN
    pour la requête elle ne contient qu'un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 
    	Produit.QteMini AS QteMini
    FROM 
    	Produit
    WHERE 
    	Produit.Reference = {pReference}
    ça marche très bien en ce moment.
    est ce qu'il y a un moyen d'optimiser plus les performance, de peur de voir le traitement se ralentir quand il y'aura plein de ligne dans la table.

    Merci.
    Apparemment tu as une requête pour remplir la table, puis pour chaque ligne tu joues une 2ème requête pour calculer la QteEnStock
    Si tu as beaucoup de lignes ça peut plomber la performance...

    Il faut que la requête qui te permet de remplir la table inclue le résultat de la 2ème requête. Comme ça une seule requête est jouée...

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Points : 163
    Points
    163
    Par défaut
    Merci laurent30s pour votre réponse,

    la table "TABLE_StockActuel" est lié et rempli par le résultat de la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT 
      Stock.Reference AS Reference,  
      Produit.LibProd AS LibProd,  
      Stock.QteEnStock AS QteEnStock
    FROM 
      Produit,  
      Stock
    WHERE 
        Stock.Reference  =  Produit.Reference
     
    ORDER BY 
      Reference ASC
    Comment faire en sorte qu'une seule requête soit joué, dans ce cas ?
    Merci.

  6. #6
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Pas grand chose à modifier...
    Vu que QteMini est une rubrique du fichier Produit et que ce fichier est déjà dans la requête, tu as seulement à ajouter QteMini dans le SELECT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT 
      Stock.Reference AS Reference,  
      Produit.LibProd AS LibProd,  
      Stock.QteEnStock AS QteEnStock,
      Produit.QteMini AS QteMini
    FROM 
      Produit,  
      Stock
    WHERE 
        Stock.Reference  =  Produit.Reference
    ORDER BY 
      Reference ASC
    Dans la table prévois une colonne pour accueillir QteMini que tu rends invisible.

    Ensuite dans la section de code "affichage de la ligne de TaTable"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI TaTable.COL_QteEnStock < TaTable.COL_QteMini ALORS
    	// la ligne en rouge
    SINON
    	// la ligne en noir
    FIN

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Points : 163
    Points
    163
    Par défaut
    Bonsoir,
    Merci encore laurent30s pour ta réponse;
    j'ai fais comme tu as dis, c'est plus intéréssant; et ça marche très bien.
    Merci encore à toi et à digi12.
    Salutations.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/12/2008, 09h31
  2. différencier une cellule vide d'une cellule nulle
    Par schwarzy2 dans le forum VB.NET
    Réponses: 4
    Dernier message: 02/09/2008, 13h50
  3. Réponses: 1
    Dernier message: 12/12/2007, 13h38
  4. incrémenter une cellule jusqu'a une cellule variable
    Par derf3183 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/07/2006, 14h48
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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