|
| Test Logique sur variable |
| Iniciado por fougeroux, 01,jul. 2020 13:40 - 13 respuestas |
| |
| | | |
|
| |
| Publicado el 01,julio 2020 - 13:40 |
Bonjour à tous,
Je ne sais pas encore comment résoudre mon besoin en développement sous Windev, je vous le soumet.
Le besoin : j'ai une base de donnée qui contient des config : (P1=01 ; P2 =03 ; .... ) Colonne 1 : Id d'une Config (issue d'une Bd config) Colonne 2 : Nom du paramètre (P1, P2 .... ) Colonne 3 : la valeur du paramètre (01 ; 03 ; 02 .... ) Je peux ainsi créer autant de paramètre que besoin, lié a une config. La ou ça complique une troisième colonne avec une condition de visibilité. En effet le paramétré doit être visible sous condition d'autre paramétré (ex: SI P1=01 ET P3=04 ALORS visible SINON pas visible) Donc une colonne 4 : Condition de visibilité
L'utilisateur créer le paramètre et la condition de visibilité. Il se doit d’écrire correctement la formule avec rigueur sous forme : (P1=01 ET P3=04) ET P6=02 )
Au final j'ai un tableau qui affiche la liste des paramètres visible uniquement. Si un paramètre vient a être changé par l'utilisateur, la règle de visibilité de tous les autres doit être re-appliquer.
J’espère avoir été clair.
Merci à tous pour votre aide.
FOUGEROUX Christophe |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.363 mensajes |
|
| Publicado el 01,julio 2020 - 14:49 |
Bonjour, A première vue, il faut scinder ta table en 2, 1 table Config et 1 table Paramètre. Ensuite ajouter une table de relation config-paramètre
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
| Publicado el 01,julio 2020 - 15:44 |
C'est ce qui est fait actuellement.
C'est pour la suite que je ne sais pas comment faire.
Mercie pour votre aide. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 310 mensajes |
|
| Publicado el 01,julio 2020 - 16:31 |
Bonjour,
Une possibilité ,
- Charger les valeurs des parametres dans un tableau associatif global tableauAssociatif["P1"]=01 ....
Pour chacune des occurences du tableau Associatif :
- Créer une chaine de caractère basée sur ses conditions de visibilité, en remplacant P1, P2... par tableauAssociatif["P1"]..., cette chaine sera ensuite compilée dynamiquement pour obtenir le resultat :
Moncode est une chaine=[ renvoyer ( (tableauAssociatif["P1"]=01 ET tableauAssociatif["P3"]=04) ET tableauAssociatif["P6"]=02 )) ]
- Utiliser la compilation dynamique (fonction windev Compile) pour obtenir le resultat du test-> il s'agit du statut de visibilité du paramètre
Sans doute est-il aussi possible d'utiliser les indirections, mais la compilation dynamique permet de combiner tous les tests imaginables...
Bon dev |
| |
| |
| | | |
|
| | |
| |
| Publicado el 01,julio 2020 - 16:54 |
Cette solution me plais bien elle a l'air de marcher.
Pas tout compris mais je vais chercher dans ce sens.
Remarque importante : les paramètre P1 , P2 .... sont inconnue dans le code. On est d'accord je peux récupérer ces info dans la lecture de la table Et créer avec un boucle sur l'ensemble des paramètres (en utilisant une table ou raquette SQL)
Merci encore |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.173 mensajes |
|
| Publicado el 01,julio 2020 - 16:54 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 01,julio 2020 - 17:01 |
THIERRY TILLIER a écrit :
Peut etre je connais pas .
Je peux avoir des précision, mais Je vais regarder avec l'aide
Merci |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 213 mensajes |
|
| Publicado el 02,julio 2020 - 02:22 |
Bonjour Christophe,
J'ai des écrans utilisateur qui affichent des listes, par exemple de clients.
Si un utilisateur ajoute/modifie/supprime un client, je veux que le changement se répercute aux autres utilisateurs. Bref, que la liste affichée soit le reflet de la base de données.
Pour ce faire j'utilise la fonction "HVersion". https://doc.pcsoft.fr/fr-FR/?3044020
A la création du fichier de données, le numéro de version est initialisé à 1. Ce numéro est incrémenté à chaque modification du contenu du fichier (HAjoute, HEcrit, HModifie, TableEnregistre, TableSupprime, HLibère, HSupprime, HRaye). Le numéro est incrémenté uniquement en cas de succès de la fonction.
-------------------------------------------------- Ce que je suggère:
1) Au chargement de ce que tu affiches selon les règles existante, mémorise la version des tables concernées. MaVariableVersion = HVersion(MaTable1) + HVersion(MaTable2)
2) Ajout d'une procédure sur "Timer" À un intervalle que tu détermines, la procédure fait une simple comparaison.
Si MaVariableVersion <> HVersion(MaTable1) + Hversion(MaTable2) alors Ton code de rafraichissement ici. MaVariableVersion = HVersion(MaTable1) + HVersion(MaTable2) FIN --------------------------------------------------
J'utilise amplement et c'est un charme.
Naturellement, j'ai centralisé le chargement dans une procédure. Sur changement de "version", je fait appel à cette procédure, qui recharge ma fenêtre, ma liste, etc...
Bon dev.
Serge
-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
| Publicado el 02,julio 2020 - 09:04 |
Bonjour,
Astuce très intéressante a connaitre faut que je regarde.
Ce qui me manque c'est la façon de tester les paramétrés suivant les règles saisie dans un champs : SI P1=02 ET P3=05 OU P5=06 ALORS visible SINON PAS Visible
Merci |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.363 mensajes |
|
| Publicado el 02,julio 2020 - 10:49 |
Cela peut se faire aussi via des triggers en Ajout/Modification/Suppression sur les tables souhaitées.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.173 mensajes |
|
| Publicado el 02,julio 2020 - 18:24 |
Pour le champ calculé (ou plutôt Rubrique calculée) il faut ajouter un champ dans la table ( le fichier de données) et sélectionné le type Fonction:


-- Thierry TILLIER Développeur Windev-Webdev Formation Windev : https://coursdinfo.teachable.com/ Formation bureautique : https://coursdinfo.net |
| |
| |
| | | |
|
| | |
| |
| Publicado el 03,julio 2020 - 09:34 |
Bonjour, Un peut plus de concret :
Table Config : Colonne 1 / Colonne 2 ID config / Nom de la config 1 / Config N° 1 2 / Config N° 2
Table Paramètre : Colonne 1 / Colonne 2 / Colonne 3 / Colonne 4 Id config / Nom paramètre / Valeur Paramètre / Condition masquage 1 / P1 / 02 / 1 / P2 / 03 / (P3=02 ou P4=06 ) ou P6=05 1 / P3 / 05 / 1 / P5 / 02 / 1 / P6 / 08 / P2 = 02 7 / P7 / 10 /
L'objectif : Faire afficher la liste des paramètres de la config 1. Certains paramètres sont masqué en fonction de la valeur d'autres paramètres.
Mon idée est lorsque j'affiche les paramètres dans une table, je créer les variable du même nom que le paramètre. Et ainsi je peut tester les conditions. Mais je ne sais pas si je peux créer des variables automatiquement et qui prennent le nom du paramètre et la valeur.
J’espère être clair.
Merci |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 310 mensajes |
|
| Publicado el 03,julio 2020 - 14:36 |
Bonjour, Finalement, cela peut se résoudre avec ceci :
Procedure ChargerConfig (pIdconfig=1) tableauAssociatifValeurs est un tableau associatif d'entiers tableauAssociatifConditions est un tableau associatif de chaîne
tableauAssociatifValeurs["P1"]=2 tableauAssociatifValeurs["P2"]=2 tableauAssociatifValeurs["P3"]=5 tableauAssociatifValeurs["P4"]=6 tableauAssociatifValeurs["P5"]=2 tableauAssociatifValeurs["P6"]=8 tableauAssociatifValeurs["P7"]=10
tableauAssociatifConditions["P1"]="" tableauAssociatifConditions["P2"]="(P3=2 ou P4=6) OU P6=5" tableauAssociatifConditions["P3"]="" tableauAssociatifConditions["P4"]="" tableauAssociatifConditions["P5"]="" tableauAssociatifConditions["P6"]="P2=2" tableauAssociatifConditions["P7"]=""
POUR TOUT savaleur,unparametre de tableauAssociatifValeurs POUR TOUT sacondition,unparametreC de tableauAssociatifConditions tableauAssociatifConditions[unparametreC]=Remplace(sacondition,unparametre,"tableauAssociatifValeurs["+Caract(34)+unparametre+Caract(34)+"]") FIN FIN
blnVisible est un booléen POUR TOUT savaleur,unparametre de tableauAssociatifValeurs blnVisible=Vrai SI tableauAssociatifConditions[unparametre]<>"" ALORS QUAND EXCEPTIONEXCEPTION DANS blnVisible=EvalueExpression(tableauAssociatifConditions[unparametre]) FAIRE blnVisible=Faux FIN FIN Trace(unparametre+TAB+blnVisible) FIN
bon dev. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 03,julio 2020 - 15:16 |
Trops bien et trops fort si ça marche !
 
Je test lundi.
Merci beaucoup ! |
| |
| |
| | | |
|
| | | | |
| | |
|