PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Mise en forme conditionnelle sur champs table par programmation
Mise en forme conditionnelle sur champs table par programmation
Débuté par JVE, 22 oct. 2019 15:16 - 10 réponses
Membre enregistré
48 messages
Posté le 22 octobre 2019 - 15:16
Bonjour

Sur un volet d'un champs Onglet, un champs table a été chargé avec des données et une mise en forme conditionnelle (affecte seulement couleur de fond) est faite par le code (chargement de données et mise en forme sur appui de bouton).
L'utilisateur peut modifier les données de cette table et ensuite "rafraichir" la mise en forme conditionnelle en cliquant sur un autre bouton. Voici le code ci-dessous affecté à cette mise en forme conditionnelle.

Malheureusement rien ne se passe lors de l'appui sur ce bouton avec le code.

Pouvez vous svp m'aider sur ce sujet?


// mise en forme conditionnelle

TABLE_BOM_ERP.COL_1..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_2..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_3..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_4..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_5..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_6..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_7..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_8..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_9..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_10..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_11..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_12..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_13..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_14..CouleurFond=iTransparent
TABLE_BOM_ERP.COL_15..CouleurFond=iTransparent

POUR itableBOM = 1 À TableOccurrence(TABLE_BOM_ERP)

SI Taille(TABLE_BOM_ERP.COL_7[itableBOM])>30 ALORS
TABLE_BOM_ERP.COL_7[itableBOM]..CouleurFond=OrangeClair
FIN
SI Taille(TABLE_BOM_ERP.COL_8[itableBOM])>30 ALORS
TABLE_BOM_ERP.COL_8[itableBOM]..CouleurFond=OrangeClair
FIN
SI Taille(TABLE_BOM_ERP.COL_9[itableBOM])>30 ALORS
TABLE_BOM_ERP.COL_9[itableBOM]..CouleurFond=OrangeClair
FIN
SI SansEspace(TABLE_BOM_ERP.COL_1[itableBOM])="" ALORS
TABLE_BOM_ERP.COL_1[itableBOM]..CouleurFond=iRougeClair
FIN
SI SansEspace(TABLE_BOM_ERP.COL_2[itableBOM])="" ALORS
TABLE_BOM_ERP.COL_2[itableBOM]..CouleurFond=iRougeClair
FIN
SI SansEspace(TABLE_BOM_ERP.COL_3[itableBOM])="" ALORS
TABLE_BOM_ERP.COL_3[itableBOM]..CouleurFond=iRougeClair
FIN
SI SansEspace(TABLE_BOM_ERP.COL_4[itableBOM])="" ALORS
TABLE_BOM_ERP.COL_4[itableBOM]..CouleurFond=iRougeClair
FIN
SI SansEspace(TABLE_BOM_ERP.COL_5[itableBOM])=0 ALORS
TABLE_BOM_ERP.COL_5[itableBOM]..CouleurFond=iRougeClair
FIN
SI SansEspace(TABLE_BOM_ERP.COL_6[itableBOM])="" ALORS
TABLE_BOM_ERP.COL_6[itableBOM]..CouleurFond=iRougeClair
FIN
SI SansEspace(TABLE_BOM_ERP.COL_10[itableBOM])="" ALORS
TABLE_BOM_ERP.COL_10[itableBOM]..CouleurFond=iRougeClair
FIN
SI Droite(TABLE_BOM_ERP.COL_3[itableBOM],1)=SAI_Revision ALORS
TABLE_BOM_ERP.COL_3[itableBOM]..CouleurFond=JauneClair
FIN
FIN
Membre enregistré
160 messages
Popularité : +18 (22 votes)
Posté le 22 octobre 2019 - 15:23
mets un point d'arrêt sur ton code et dit nous la partie qui fonctionne pas
Posté le 22 octobre 2019 - 16:00
Il manque un TableSelect
Posté le 22 octobre 2019 - 17:22
Bonjour,

As-tu controlé que tu rentre bien jusqu'au code de modification ???

Le TableSelect n'est pas obligatoire.

TABLE_BOM_ERP.COL_7[itableBOM]..CouleurFond=OrangeClair

TABLE_BOM_ERP[itableBOM].COL_7..CouleurFond=OrangeClair

Dans ton cas tu ne devrait pas gagner grand chose mais sinon via des indirection :
{"Tbl_HoraireIdeal["+i+"].Col_"+J+"",indChamp}..CouleurFond = VertClair
Posté le 22 octobre 2019 - 20:09
Bonsoir,

J'utilise se type de code dans mets champs tables

bien penser à cocher "charger en mémoire"




POUR TOUTE LIGNE nligne de TABLE_Commande_fourniture_bureau
SI TABLE_Commande_fourniture_bureau.COL_LIvrée = Vrai ALORS
TABLE_Commande_fourniture_bureau[nligne].COL_Produit..Couleur = VertClair
SINON
TABLE_Commande_fourniture_bureau[nligne].COL_Produit..Couleur = RougeClair
FIN

SI TABLE_Commande_fourniture_bureau[nligne].COL_Qté > 1 ALORS
TABLE_Commande_fourniture_bureau[nligne].COL_Qté..CouleurFond = OrangeFoncé
FIN
FIN


Bon dev

Cordialement

Thibault Roux
Membre enregistré
48 messages
Posté le 23 octobre 2019 - 09:28
Bonjour
Merci pour votre aide et vos réponses.
Ma fenêtre ressemble à :



Les données sont rentrées dans le champs table de ce volet par l'action sur un autre bouton par programmation (extrait code ci dessous) qui se situe sur un autre volet (avec mise en forme conditionnelle à la fin de ce code / voir ci dessous)
code remplissage table



code pour mise en forme conditionnelle



Ensuite l'utilisateur peut modifier ou corriger, les champs de cette table (autorisation en saisie).
Afin de mettre à jour la mise à forme conditionnelle, il y a le bouton "RAFRAICHIR" qui permet de la mettre à jour (le code de mise en forme conditionnelle est identique par rapport à celui après remplissage table (bien sauf la partie remplissage de table)



L'action sur ce bouton "RAFRAICHIR" ne fait rien comme ci les données de la table n’avaient pas été modifiées. J'ai du oublier quelque chose ("enregistrer" les données de la table après modification ou autre ligne de code permettant de prendre en compte)
Membre enregistré
69 messages
Popularité : +4 (4 votes)
Posté le 23 octobre 2019 - 10:19
Bonjour JVE,

As-tu penser à positionner ton code de mise en forme dans la partie "Affichage d'une ligne de table_bom_erp ?

Ton bouton de refresh actualise les données, et le code d'affichage de la ligne s'occupe des couleurs...

Si ça peut t'aider.

Bon développement
Membre enregistré
121 messages
Popularité : +8 (14 votes)
Posté le 23 octobre 2019 - 10:33
Bonjour,

Comment sont insérées les données?
L'affichage dans un champ table avec modification ne va pas modifier le fichiers csv automatiquement. Est ce que les données sont ensuite enregistrées dans une BDD?

Je viens de faire un test avec une importation dans un champ table, la mise en forme conditionnelle fonctionne bien

Bond Dev

Thibault Roux
Membre enregistré
309 messages
Popularité : +31 (37 votes)
Posté le 23 octobre 2019 - 10:45
Bonjour,
Comme l'explique Marret, dans le cas d'une table Fichier (basée sur un fichier/requête) l'affichage doit être adapté dans le code de l'evenement "Affichage d'une ligne..." de la table

Dans votre cas de figure on aura donc :

Affichage d'une ligne de la table table_bom_erp
TABLE_BOM_ERP.COL_7[table_bom_erp]..CouleurFond=iCouleurDéfaut
SI Taille(TABLE_BOM_ERP.COL_7[table_bom_erp])>30 ALORS
TABLE_BOM_ERP.COL_7[table_bom_erp]..CouleurFond=OrangeClair
FIN

//....SUITE DE VOTRE CODE ....................................



Bon dev.
Message modifié, 23 octobre 2019 - 10:47
Membre enregistré
48 messages
Posté le 04 novembre 2019 - 16:12
Bonjour
Merci pour vos réponses.
Malheureusement je n'arrive pas à m'en sortir.
Les données sont insérées par rapport à d'autres données dans un autre champs table.
Le code concernant la mise en forme conditionnelle fonction si je le mets:
- à la suite du code d'insertion des données d'origine ou
- sur un bouton à part "Rafraichir Affichage" (si pas fait dans le code après insertion des données)
Si je le mets dans la table au niveau affichage d'une ligne, la mise en forme conditionnelle n'est pas correcte.

Ma table est en saisie. Si je modifie les données dans la table, aucune mise en jour de la mise en forme conditionnelle se fait (dans le cas code dans module affichage de la table ou sur le bouton "rafraichir affichage".








Posté le 05 novembre 2019 - 10:09
Bonjour,

Il faut mettre aussi le code a chaque sortie de Colonne pour les colonne en saisie exemple :
Sortie de TABLE_BOM_ERP.COL ajouter

TABLE_BOM_ERP.COL_7[table_bom_erp]..CouleurFond=iCouleurDéfaut
SI Taille(TABLE_BOM_ERP.COL_7[table_bom_erp])>30 ALORS
TABLE_BOM_ERP.COL_7[table_bom_erp]..CouleurFond=OrangeClair
FIN

Cordialement,

E. Rossi