Donnez vie à vos documents numériques !
 

Changer le résultat d’un calcul manuellement

abracadabraPDF Forums PDF – Général Changer le résultat d’un calcul manuellement

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45415
    Rockabilly
    Participant

    J’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(partieEntierethis.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.

Affichage de 19 réponses de 1 à 19 (sur un total de 19)
  • Auteur
    Réponses
  • #60673
    bebarth
    Maître des clés

    bonjour,
    je pense qu’il faudrait écrire quelque chose comme ça :
    if (this.getField(“NOM DU CHAMP”).value ==””) {…script à exécuter…};
    @+
    :bonjour:

    #60674
    Merlin
    Maître des clés

    Bonjour.

    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.

    #60675
    Rockabilly
    Participant

    Oui 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?

    #60676
    bebarth
    Maître des clés

    bonjour,
    ci-joint le fichier avec les scripts qui correspondent à ceux du fichier original.
    en espérant que ça te convienne !
    @+
    :bonjour:

    #60677
    Merlin
    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.

    #60678
    bebarth
    Maître des clés

    Merlin,
    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:

    #60679
    Rockabilly
    Participant

    Merci 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.

    #60680
    Merlin
    Maître des clés

    sais-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:

    #60681
    bebarth
    Maître des clés

    this.resetForm();
    c’est tout à fait ce que je voulais !
    merci.
    :bonjour:

    #60682
    bebarth
    Maître des clés

    Si j’ai compris, ça devrait donner quelque chose comme ça !!!
    Bon weekend & @+
    :bonjour:

    #60683
    Rockabilly
    Participant

    J’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.

    #60684
    bebarth
    Maître des clés

    bonjour,
    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:

    #60685
    Rockabilly
    Participant

    En 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”
    }

    #60686
    bebarth
    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:

    #60687
    Rockabilly
    Participant

    Merci 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;
    }

    #60688
    Merlin
    Maître des clés

    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;
    }

    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é.

    #60689
    Rockabilly
    Participant

    Le 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.

    #60690
    bebarth
    Maître des clés

    bonjour,
    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(partieEntierethis.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:

    #60691
    Rockabilly
    Participant

    Ça fonctionne. J’avais juste oublié d’insérer le script dans les deux champs LVESV.

Affichage de 19 réponses de 1 à 19 (sur un total de 19)
  • Vous devez être connecté pour répondre à ce sujet.