PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → gestion de signes enregistrés dans un fic
gestion de signes enregistrés dans un fic
Débuté par deaddate, 16 nov. 2004 12:59 - 6 réponses
Posté le 16 novembre 2004 - 12:59
bonjour,
j'ai créé un fichier de paramètrage avec des conditions et des valeurs pour les utiliser dans mon code ci-dessous.
Malheureusement, le code interprete les valeurs comme des chaines de caractères:
exemple:
MontantTTC0
Condition10=">"
MontantATester 00
donne :
"150>1500" = vrai alors que je voudrai 150>1500 = faux.

Merci d'avance....

SI MontantTTC + {Monfic+".Condition10"} + MontantATester ALORS
MontantFrais = MontantTTC * Val({Monfic+".Coeff10"})
SINON
SI MontantTTC + {Monfic+".Condition20"} + Val({Monfic+".MontantMini20"}) ALORS
SI MontantTTC + {Monfic+".Condition30"} + Val({Monfic+".Plafond30"}) ALORS
MontantFrais = Val({Monfic+".Resultat30"})
FIN
SI (MontantTTC * Val({Monfic+".Coeff40"}) + {Monfic+".Condition41"} + Val({Monfic+".Plancher40"})) ET (MontantTTC * Val({Monfic+".Coeff40"}) + {Monfic+".Condition41"} + Val({Monfic+".Plafond41"})) ALORS
MontantFrais = MontantTTC * Val({Monfic+".Coeff42"})
FIN
SI MontantTTC * Val({Monfic+".Coeff50"}) + {Monfic+".Condition50"} + {Monfic+".Plancher50_Corps"} ALORS
MontantFrais= {Monfic+".Resultat50_Corps"}
FIN
Posté le 16 novembre 2004 - 13:38
Je pense qu'il faut utiliser la compilation dynamique pour celà.
Regarde l'aide de compile et de ExecuteTraitement.
En gros, il faut que tu crée de toute pièce une procédure qui contient l'ensemble de tes tests, et qui te renvoie vrai ou faux.

Frédéric.
Posté le 16 novembre 2004 - 14:01
Et bien le problème c'est qu'il execute le traitement mais il interprete pas comme il faut les valeurs...
Posté le 16 novembre 2004 - 16:22
En gros, et pas testé :

TexteProc est une chaine


texteproc = "SI MontantTTC " + {Monfic+".Condition10"} + " MontantATester ALORS MontantFrais = MontantTTC * Val({Monfic+"".Coeff10""})" + ...
"SINON" + ...
"SI MontantTTC " + {Monfic+".Condition20"} + "Val({Monfic+"".MontantMini20""}) ALORS SI MontantTTC "+ {Monfic+".Condition30"} + "Val({Monfic+"".Plafond30""}) ALORS" + ...
"MontantFrais = Val({Monfic+"".Resultat30""}) " + ...
"FIN" + ...
"SI (MontantTTC * Val({Monfic+"".Coeff40""})" + {Monfic+".Condition41"} + "Val({Monfic+"".Plancher40""})) ET (MontantTTC * Val({Monfic+"".Coeff40""})" + {Monfic+".Condition41"} + "Val({Monfic+"".Plafond41""})) ALORS " + ...
"MontantFrais = MontantTTC * Val({Monfic+"".Coeff42""})" + ...
"FIN" + ...
"SI MontantTTC * Val({Monfic+"".Coeff50""}) " + {Monfic+".Condition50"} + "{Monfic+"".Plancher50_Corps""} ALORS" + ...
"MontantFrais= {Monfic+"".Resultat50_Corps""} " + ...
"FIN"

compile("ProcDynamique",TextePRoc)
executetraitement("ProcDynamique",trtprocédure)
On doit pouvoir supprimer les indirections du code généré, mais je te laisse le soin de le faire ;).

Frédéric.
Posté le 16 novembre 2004 - 16:32
wouhaou , je m'empresse de tester sa,
Merci beaucoup...
Posté le 16 novembre 2004 - 16:32
Salut

En WinDev 8, tu peux écrire des chaines de caractères multilignes plus simplement avec la syntaxe entre crochet [ ]. Un exemple :

MaChaine est une chaine = [
Ce texte
est composé
de plusieurs lignes.
]

Ciao
http://wdgotcha.atspace.com
Posté le 17 novembre 2004 - 16:59
salut, merci pour cette simplification de mon texte mais cela me pose un problème.
En effet, ce code est dans une procédure qui comporte 3 paramètres que je dois utiliser dans mon code.
Ceux ci ne sont pas reconnu entre les crochets
(voilà le morceaux de code qui correspond)

PROCEDURE Calcul_Frais_Sinistre(MontantTTC est un monétaire, MontypePolice est une chaîne, DateCompagnie est une chaîne, TypeOperation est un entier)
MaChaine , Res, res2 sont des chaînes
MaChaine = [
MontantFrais est un monétaire
sRubCléParcours est une chaîne
Monfic est une chaîne="Fic_Sin_Tableau_De_Parametrage_Frais"
sRubCléParcours = HFiltre(Fic_Sin_Tableau_De_Parametrage_Frais,"Categorie='" + MontypePolice +"' ET Date_Du<='"+ DateCompagnie + "' ET Date_Au>='"+ DateCompagnie + "'")
HLitPremier(Fic_Sin_Tableau_De_Parametrage_Frais,sRubCléParcours)