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 :

Coloration des lignes d'une table, comportement étrange


Sujet :

WinDev

  1. #1
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut Coloration des lignes d'une table, comportement étrange
    Bonjour à tous,

    c'est la reprise, maintenant que j'en ai terminé avec la mise au point de mon CBN, je développe un écran qui permet de valider les propositions issues du CBN.

    Donc dans une table j'ai mes propositions (de fabrication, ou d'achat) que je peux cocher/décocher puis transformer en véritable ordre dans le système.

    Ensuite, je souhaite que les propositions déjà acceptées (et intégrées) ne puissent plus l'être une seconde fois.

    Pour ça j'ai dans ma table un flag "valide" qui, s'il est à 1 signifie que la proposition a déjà été validée, 0 sinon.

    Donc je fais une mise en forme conditionnelle à chaque ligne de la table, si valide = 1 je colore ma ligne en vert et je désactive la checkbox en la grisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SI COL_valide = 1 ALORS
     
    	TABLE_POF[TABLE_POF..Occurrence]..CouleurFond = VertClair
    	TABLE_POF[TABLE_POF..Occurrence].COL_coche..Etat = Grisé
    FIN
    Dans l'exemple qui suit, toutes les lignes ont déjà été acceptées, par conséquent elles ont toutes valide = 1. Pourtant, voici ce que cela donne dans la table :



    Toutes les lignes devraient être en vert. J'ai débuggé le code et cette portion de code est bien exécutée pour toutes les lignes, aucune ne passe à coté.

    Une idée pour m'aider à résoudre ça ?

    Merci
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  2. #2
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    2 choses à vérifier :
    - Ne devez-vous pas écrire COL_valide[TABLE_POF..Occurrence] ?
    - Avez-vous un appel à TableTrie ? Si oui, l'indice de la dernière ligne ajoutée n'est pas forcément TABLE_POF..Occurrence. Vous pouvez écrire TableTrie(TABLE_POF, Faux) pour corriger ça, ou récupérer l'indice retourné par TableAjouteLigne.

    Enfin, vous pouvez aussi utiliser le code d'affichage d'une ligne, ou bien écrire une boucle en fin de chargement.

  3. #3
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Citation Envoyé par Hibernatus34 Voir le message
    2 choses à vérifier :
    - Ne devez-vous pas écrire COL_valide[TABLE_POF..Occurrence] ?
    - Avez-vous un appel à TableTrie ? Si oui, l'indice de la dernière ligne ajoutée n'est pas forcément TABLE_POF..Occurrence. Vous pouvez écrire TableTrie(TABLE_POF, Faux) pour corriger ça, ou récupérer l'indice retourné par TableAjouteLigne.

    Enfin, vous pouvez aussi utiliser le code d'affichage d'une ligne, ou bien écrire une boucle en fin de chargement.
    Bonjour hibernatus34,

    la correction du code (COL_valide[TABLE_POF..Occurrence]) ne change rien.

    je n'ai pas d'appel à TableTrie.

    Je veux bien faire une mise en forme en toute fin de chargement, par contre comment affecter la propriété couleurfond uniquement à une ligne simplement en faisant un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    POUR TOUTE LIGNE DE TABLE_POF
     
    	SI TABLE_POF.COL_valide = 1 ALORS
    		// mettre en forme la ligne
     
     
    	FIN
    FIN
    Merci à toi
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  4. #4
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    2 possibilités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    POUR TOUTE LIGNE i DE TABLE_POF
    	SI TABLE_POF.COL_valide = 1 ALORS
    		// mettre en forme la ligne
    		TABLE_POF[i]..CouleurFond = VertClair
    	FIN
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    POUR i = 1 _A_ TABLE_POF..Occurrence
    	SI TABLE_POF[i].COL_valide = 1 ALORS
    		// mettre en forme la ligne
    		TABLE_POF[i]..CouleurFond = VertClair
    	FIN
    FIN
    Mais ça serait intéressant de comprendre pourquoi votre code ne fonctionne pas.
    Pouvez-vous nous dire dans quel contexte vous exécutez le code sus-cité ?
    Les coches sont-elles bien grisées ? Si oui, ça veut dire que la couleur est perdue un peu plus tard. Sinon, ça veut dire que la couleur n'a probablement jamais été appliquée.

  5. #5
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    C'est tout bon, mise en forme en toute fin de chargement, ça fonctionne.

    Effectivement, j'aimerais moi aussi comprendre pourquoi ça ne marche pas en mettant le code dans l'evénement "affichage d'une ligne", d'autant que j'utilisais cette méthode dans d'autres tables et ça fonctionnait.

    Alors pour décrire le contexte :

    à l'ouverture de ma fenêtre, je charge la liste d'articles, les propositions (chargées par programmation, et triée selon la date via un ORDER BY, mais pas de TableTrie) qui correspondent à l'article sélectionné (toutes si je suis sur l'option * de ma liste), et sur sélection d'une proposition dans ma première table, je charge l'évolution de mon stock pour visualiser à quel moment intervient la proposition et pour quel besoin. Cette table (Table_ES) est alimentée par plusieurs blocs requêtes (d'abord les besoins en livraisons de commande, en prévision de commande, besoins en appro sur OF, sur POF, etc... puis les réceptions attendues sur OA, sur POA) puis la table est triée sur la date pour avoir une vue cohérente des entrées sorties.

    C'est tout ! J'ai essayé de virer le tri sur ma Table_ES (au cas où il y ait un effet de bord sur les autres tables) mais ça n'a rien changé.
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    quand tu fais ton ajout de ligne, si tu utilises tableajoute ou tableajouteligne, tu peux savoir quel est l'indice de la ligne ajoutée. Si tu traces cet indice, tu verras si cela suit un ordre logique ou si l'indice change régulièrement. Lorsque je veux mettre des couleurs, je stocke cet indice et porte la couleur sur l'indice de la ligne ajoutée et non pas la "soit-disant" dernière ligne ajoutée pour éviter ce genre de problème ...

    bon courage,

    Nicolas

  7. #7
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Citation Envoyé par bvadam Voir le message
    Effectivement, j'aimerais moi aussi comprendre pourquoi ça ne marche pas en mettant le code dans l'evénement "affichage d'une ligne", d'autant que j'utilisais cette méthode dans d'autres tables et ça fonctionnait.
    Si le code était dans "affichage d'une ligne", l'indice n'est pas TABLE_POF..Occurrence mais TABLE_POF.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SI COL_valide = 1 ALORS
    	TABLE_POF[TABLE_POF]..CouleurFond = VertClair
    	TABLE_POF[TABLE_POF].COL_coche..Etat = Grisé
    FIN

Discussions similaires

  1. [JTable] coloration des lignes d'une JTable
    Par MathiasM dans le forum Composants
    Réponses: 3
    Dernier message: 22/06/2009, 10h19
  2. Réponses: 14
    Dernier message: 22/09/2005, 16h49
  3. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50
  4. Copier des lignes d'une table
    Par thomas_strass dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 01/07/2005, 15h42
  5. Réponses: 4
    Dernier message: 31/05/2004, 12h26

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