|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Procédure globale avec nom de table et colonne en parametre |
Débuté par Cyril_DSH, 04 juin 2025 16:39 - 6 réponses |
| |
| | | |
|
| |
Membre enregistré 7 messages |
|
Posté le 04 juin 2025 - 16:39 |
Bonjour dans un projet j'ai ce petit bout de code pour changer la couleur d'une cellule d'une table tout dépend la combo de la colonne à côté.
Mon problème est que je n'arrive pas à envoyer le nom de la table et le nom des colonnes dans la procédure.
SI Table_Programmation.KitIEM..ValeurAffichée = "Production" ALORS Table_Programmation.NbreIEMPocketHF[IndiceEnCours()]..CouleurFond = JauneOr Table_Programmation.NbreIEMPocketHF[IndiceEnCours()]..Couleur = RougeFoncé SINON SI Table_Programmation.KitIEM..ValeurAffichée = "Festival" ALORS Table_Programmation.NbreIEMPocketHF[IndiceEnCours()].CouleurFond = Blanc Table_Programmation.NbreIEMPocketHF[IndiceEnCours()]..Couleur = Noir FIN Celle-ci fonctionne très bien. J'aimerai en faire une procédure globale pour l'utiliser avec d'autres tables d'autres colonnes. J'ai renseigné ceci à la place de mon petit bout de code ci dessus
PG_PRODUCTION_Couleurs(Table_Programmation,KitIEM,NbreIEMPocketHF) Et dans la déclaration des procédures cela:
Procedure PG_PRODUCTION_Couleurs(Ta est une chaîne ANSI, CoTrig est une chaîne ANSI, CoCha est une chaîne ANSI) SI Ta[CoTrig]..Valeur = "Production" ALORS Ta[CoCha][IndiceEnCours()]..CouleurFond = JauneOr Ta[CoCha][IndiceEnCours()]..Couleur = RougeFoncé Ta[CoCha][IndiceEnCours()]..CouleurFond = Blanc Ta[CoCha][IndiceEnCours()]..Couleur = Noir SINON SI Ta[CoTrig].Valeur = "Festival" ALORS Ta[CoCha][IndiceEnCours()]..CouleurFond = JauneOr FIN
Je n'ai pas d'erreur mais cela ne fonctionne pas . J'ai bien entendu essayé sans les "" pour les déclaration de variables dela table et colonne mais cela ne fonctionnait pas mieux.
Des idées svp ?
Merci pour votre lecture. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 20 messages |
|
Posté le 04 juin 2025 - 18:06 |
Bonjour, Je n'ai pas testé mais j'aurais plus vu un code comme ci-dessous :
Procedure PG_PRODUCTION_Couleurs(CoTrig est un champ, CoCha est un champ, nIndiceEnCours est un entier) SI CoTrig..ValeurAffichée = "Production" ALORS CoCha[nIndiceEnCours]..CouleurFond = JauneOr CoCha[nIndiceEnCours]..Couleur = RougeFoncé SINON SI CoTrig..ValeurAffichée = "Festival" ALORS CoCha[nIndiceEnCours].CouleurFond = Blanc CoCha[nIndiceEnCours]..Couleur = Noir FIN Avec l'appel :
PG_PRODUCTION_Couleurs(Table_Programmation.KitIEM, Table_Programmation.NbreIEMPocketHF, IndiceEnCours()) NN12 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 950 messages |
|
Posté le 04 juin 2025 - 18:54 |
Bonjour ça fonctionne pour moi en passant les noms de table, champ, colonne à une indirection
appel de la procédure :
ChangeCouleur("Fen_32_Table_Selecteur.Table_utilisateurs.Nom")
dans la procédure :
Procedure ChangeCouleur(MaVariable est une chaîne)
{MaVariable, indChamp}[1]..CouleurFond = Jaune {MaVariable, indChamp}[1]..Couleur = Bleu
Cdlt |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 950 messages |
|
Posté le 04 juin 2025 - 21:44 |
Le code de la procédure au post #3 ne fonctionnera pas car les constantes de couleurs ne sont pas correctes :
Procedure ChangeCouleur(MaVariable est une chaîne)
{MaVariable, indChamp}[1]..CouleurFond = JauneOr {MaVariable, indChamp}[1]..Couleur = RougeFoncé
Autre méthode , j'en profite pour vous montrer le code avec l'indice dans l'appel de la procédure :
ChangeCouleur("Fen_32_Table_Selecteur.Table_utilisateurs.Nom[" + Table_utilisateurs + "]")
Code de la procédure :
Procedure ChangeCouleur(MaVariable est une chaîne)
{MaVariable, indChamp}..CouleurFond = JauneOr {MaVariable, indChamp}..Couleur = RougeFoncé
Cdlt |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 7 messages |
|
Posté le 05 juin 2025 - 09:18 |
Merci Cedric et NN12 pour vos réponses. @NN12 j'ai suivi ton conseil non testé qui fonctionne bravo et j'ai donc écrit ceci. L'appel de la procédure
PG_PRODUCTION_Couleurs(Table_Programmation.KitIEM,Table_Programmation.NbreIEMPocketHF)
La procédure
Procedure PG_PRODUCTION_Couleurs( CoTrig est un Champ, CoCha est un Champ ) SI CoTrig..ValeurAffichée = "Production" ALORS CoCha[IndiceEnCours()]..CouleurFond = JauneOr CoCha[IndiceEnCours()]..Couleur = RougeFoncé SINON SI CoTrig..ValeurAffichée = "Festival" ALORS CoCha[IndiceEnCours()]..CouleurFond = Blanc CoCha[IndiceEnCours()]..Couleur = Noir FIN
Une question subsidiaire en faisant un GO je teste ma table je peux écrire cela se sauvegarde mais le changement de couleur opéré par la procédure ne se sauvegarde pas comment faire? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 7 messages |
|
Posté le 05 juin 2025 - 09:26 |
Cedric dans le post #4 désolé je suis un tout nouveau dans WINDEV j'ai du mal à comprendre
ChangeCouleur("Fen_32_Table_Selecteur.Table_utilisateurs.Nom[" + Table_utilisateurs + "]") Fen_32_Table_Selecteur: la fenêtre où se trouve la table en question pour moi FEN_Programmations Table_utilisateurs: la table concernée pour moi Table_Programmation Nom: colonne ? pour moi KitIEM ? [" + Table_utilisateurs + "] : l'indice en cours ?????
J'aime bien comprendre quand on me donne des conseils
Merci en tout cas. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 950 messages |
|
Posté le 05 juin 2025 - 09:49 |
[" + Table_utilisateurs + "] : l'indice en cours ?????
oui, je récupère le numéro de ligne en cours dans la table. Cdlt |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|