abracadabraPDF › Forums › PDF – Général › Changer le résultat d’un calcul manuellement
- Ce sujet est vide.
- CréateurSujet
- 18 mai 2016 à 19:02 #45415
Rockabilly
ParticipantJ’ai un champ dont la valeur doit être calculée selon 2 autres champs.
Cependant je veux pouvoir changer le résultat du calcul manuellement.Mon script est le suivant dans le champ “StressLVEF” et “StressLVEFDec”:
calcul=(((this.getField(“StressLVEDV”).value) – (this.getField(“StressLVESV”).value)) / (this.getField(“StressLVEDV”).value)) * 100
partieEntiere=Math.floor(calcul)
if(partieEntiere<=0) {partieEntiere="";}
this.getField(“StressLVEF”).value=partieEntiere;
partieDecimale = Math.round(10*(calcul-partieEntiere));
this.getField(“StressLVEFDec”).value=partieDecimale;Selon ce qu’on m’a dit, il est possible que parfois la valeur de LVEF calculée doit être changer manuellement pour quelques raisons que ce soit.
- CréateurSujet
- AuteurRéponses
- 19 mai 2016 à 05:46 #60673
bebarth
Maître des clésbonjour,
je pense qu’il faudrait écrire quelque chose comme ça :
if (this.getField(“NOM DU CHAMP”).value ==””) {…script à exécuter…};
@+
:bonjour:19 mai 2016 à 12:55 #60674Merlin
Maître des clésBonjour.
Ce n’est pas possible, même si le champ est accessible en écriture c’est toujours le script de calcul qui a le dernier mot.19 mai 2016 à 12:55 #60675Rockabilly
ParticipantOui je sais qu’il faudrait débuter par le script que tu as donné, mais je suis plus intéressé par le fait de pouvoir changer manuellement le résultat de l’équation.
J’ai trouvé un exemple de formulaire sur le forum d’Adobe, mais le formulaire a été créé dans LiveCycle.
Est-ce que quelqu’un peut m’aider à trouver le code pour changer le résultat en donnant également un avertissement?20 mai 2016 à 08:17 #60676bebarth
Maître des clésbonjour,
ci-joint le fichier avec les scripts qui correspondent à ceux du fichier original.
en espérant que ça te convienne !
@+
:bonjour:20 mai 2016 à 09:34 #60677Merlin
Maître des clés:bravo:
OK, je vais donc aller manger mon chapeau, ça tombe bien c’est bientôt l’heure de déjeuner. :Smiley08:
Bon appétit à tous.20 mai 2016 à 11:27 #60678bebarth
Maître des clésMerlin,
sais-tu remettre toutes les valeurs des champs à 0 au lieu de les faire une par une comme dans le bouton RESET !
ici ça va bien qu’il n’y en pas pas trop…
merci.
:bonjour:20 mai 2016 à 15:04 #60679Rockabilly
ParticipantMerci bebarth.
J’ai essayé d’adapter le code dans mon formulaire, mais ça ne fonctionne pas. Les calculs sont un peu plus complexes qu’une addition, mais pas autant. Ce n’est qu’une soustraction suivis d’une divsion.
Le gros problème est que je dois joindre la partie entière avec la partie décimale (s’il y en a une) pour faire le calcul.J’ai joint une maquette, si quelqu’un peut m’aider.
20 mai 2016 à 15:27 #60680Merlin
Maître des cléssais-tu remettre toutes les valeurs des champs à 0 au lieu de les faire une par une comme dans le bouton RESET !
Code:this.resetForm();Mais je ne suis pas certain de bien comprendre la question. :Euuuh:
20 mai 2016 à 15:34 #60681bebarth
Maître des clésthis.resetForm();
c’est tout à fait ce que je voulais !
merci.
:bonjour:20 mai 2016 à 17:36 #60682bebarth
Maître des clésSi j’ai compris, ça devrait donner quelque chose comme ça !!!
Bon weekend & @+
:bonjour:24 mai 2016 à 18:13 #60683Rockabilly
ParticipantJ’ai réussi a intégrer les décimales dans le calcul.
Cependant lorsque je remet les autres champs du formulaire, le calcul devient erroné pour une raison quelconque. La source du problème sont les champs “StressLVEDVwhole” et “BSAwhole” et “BSAdecimal”.
Lorsque j’enlève ces champs, le calcul est exact et instantané.
De plus, l’apparition du calcul de “Stress LVEDVi” n’est plus instantané, mais en retard d’une touche.
De ce que je peux comprendre, c’est qu’un calcul dépend d’un autre calcul et qu’il faut re-organiser l’ordre des calculs… mais je n’y arrive pas :mur:Essayez avec les valeur 150.5 et 99.5 dans les champs LVEDV et LVESV respectivement.
25 mai 2016 à 08:09 #60684bebarth
Maître des clésbonjour,
je n’ai pas le temps de me plonger complètement dans tous tes scripts et calculs, mais après un premier coup d’oeil je me demande si ta valriable “partieEntiere” utilisée dans les calculs précédents doit être la même pour les champs “BSAwhole”, “BSAdecimal” et “StressLVEDVi”. j’ai modifié les variables de ces champs en “partieEntiere1”, “partieEntiere2” et “partieEntiere3” et le résultat semble correct.
reste à savoir une de ces variables doit être commune pour plusieurs champs.
@+
:bonjour:25 mai 2016 à 17:20 #60685Rockabilly
ParticipantEn effet, ça fonctionne lorsque je modifie partieEntiere avec partieEntiere1, partieEntiere2, partieEntiere3. Je croyais que les variables n’étaient utilisées que pour le champ dans laquelle elles étaient insérées.
Une dernière question… en faisant des tests, je viens de remarquer que si le résultat d’un calcul arrive à 92.96 le résultat montrerait 92 pour la partieEntiere et 10 dans la partieDecimale. Je comprends que c’est à cause de la fonction Math.floor du calcul, mais y-a-t’il une possibilité de mettre 93 et 0.
J’ai essayé de rajouter ce code, mais ça n’a pas fonctionné:
if (this.getField(“StressLVEDViDec”).value = “10”)
{
event.value = partieEntiere3+1;
this.getField(“StressLVEDViDec”).value = “0”
}25 mai 2016 à 20:00 #60686bebarth
Maître des clés…ici les valeurs sont des nombres, il faut donc supprimer les guillemets :
if (this.getField(“StressLVEDViDec”).value = 10)
{
event.value = partieEntiere3+1;
this.getField(“StressLVEDViDec”).value = 0
}Mais pourquoi this.getField(“StressLVEDViDec”).value = 10, ne serait-ce pas plutôt this.getField(“StressLVEDViDec”).value >= 10 ???
@+
:bonjour:27 mai 2016 à 13:44 #60687Rockabilly
ParticipantMerci bebarth.
J’ai une autre question. Je voudrais faire en sorte que les champs “StressLVEF” et “StressLVEFDec” soient en readonly lorsque l’un ou l’autre des champs “StressLVEDV” et “StressLVESV” est vide.
Lorsque la réponse apparaitra, les champs deviendront remplissables et l’utilisateur pourra par la suite changer la valeur manuellement.
Le problème que j’ai est que lorsque je rajoute le code, le message “Voulez-vous vraiment modifier ce champ?” n’apparait plus. J’ai essayé de mettre le code à plusieurs endroit, mais le message n’apparait plus.if ((this.getField(“StressLVEVD”).value != “”) && (this.getField(“StressLVESD”).value != “”))
{
this.getField(“StressLVEF”).readonly = false;
this.getField(“StressLVEFDec”).readonly = false;
}
else
{
this.getField(“StressLVEF”).readonly = true;
this.getField(“StressLVEFDec”).readonly = true;
}27 mai 2016 à 14:28 #60688Merlin
Maître des clésif ((this.getField(“StressLVEVD”).value != “”) && (this.getField(“StressLVESD”).value != “”))
{
this.getField(“StressLVEF”).readonly = false;
this.getField(“StressLVEFDec”).readonly = false;
}
else
{
this.getField(“StressLVEF”).readonly = true;
this.getField(“StressLVEFDec”).readonly = true;
}Ce script est a placer en script de calcul dans les deux champs StressLVEF et StressLVEFDec (attention à l’Ordre de calcul).
Le script d’alerte est à placer en action Souris Enfoncée, ou Souris entrée, dans le champ concerné.
27 mai 2016 à 15:17 #60689Rockabilly
ParticipantLe script d’alerte est dans chacun des 2 champs “StressLVEF” et “StressLVEFDec” en Souris Enfoncée et j’ai placé le script dans le calcul et ça ne fonctionne pas.
28 mai 2016 à 14:23 #60690bebarth
Maître des clésbonjour,
Tu commences par mettre tes 2 champs en lecture seule, ensuite tu changes éventuellement leur état en même temps que chaque calcul.
Par exemple pour le champs StressLVEDV:
…
if(partieEntiere<=0) {partieEntiere="";}
this.getField(“StressLVEF”).value = partieEntiere;
this.getField(“StressLVEFDec”).value = Math.round(10*(calculDecimal-partieEntiere));
this.getField(“StressLVEF”).readonly = false;
this.getField(“StressLVEFDec”).readonly = false;
} else {
this.getField(“StressLVEF”).value = “”;
this.getField(“StressLVEFDec”).value = “”;
this.getField(“StressLVEF”).readonly = true;
this.getField(“StressLVEFDec”).readonly = true;
}Attention, le fichier joint fonctionne mais n’ai certainement pas ton dernier fichier…
@+
:bonjour:31 mai 2016 à 14:52 #60691Rockabilly
ParticipantÇa fonctionne. J’avais juste oublié d’insérer le script dans les deux champs LVESV.
- AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.