Skip to main content
Participant
October 30, 2023
Answered

Campo calculado complejo en un formulario vía la Secuencia de comandos de cálculo personalizado

  • October 30, 2023
  • 1 reply
  • 296 views

Buenas tardes-noches,

Llevo toda la tarde con eso, y no entiendo lo que falla:

1º - Los datos:
Quiero obtener en un campo el resultado de -("dA" + ("aA" - "dA") / (1 + (("T" * 60) / "cA") ^ "bA") ^ "mA") siendo "aA", "bA", "cA", "dA", "mA" y "T" campos numéricos del formulario.

Valores de cada campo:

aA-0,0993739165
bA0,8250397573
cA2.737,7852520669
dA0,5258866992
mA1,0070467315
T324

 

He introducido la fórmula siguiente en la Secuencia de comandos de cálculo personalizado:
event.value=
-  (
(this.getField("dA").value)
+ ( (this.getField("aA").value) - (this.getField("dA").value) )
/
(1+
(((this.getField("T").value)*60)/(this.getField("cA").value))^(this.getField("bA").value)
)^(this.getField("mA").value)
 )

He comprobado -incluso varias veces- que los campos aA, bA, cA, dA y mA son numéricos con hasta 10 decimales (formato 1.250,43), y que el campo T es numérico con hasta 2 decimales (también formato 1.250,43). El campo resultado "Coef" es numérico con hasta 4 decimales y mismo formato.

2º - El problema es que el resultado del campo calculado "Coef" es 0 (céro)... cuando la misma fórmula con los mismos datos en Excel me da -0,4237. He probado de todo como aumentar mucho el valor todos los campos e incluso añadir +0.5000 (no funciona con "coma") y -0.5000 al final de la fórmula. Sólo con lo segundo me da como resultado los 0,5000|-0,5000 añadidos a la fórmula. Pensé entonces que era por el formato de la coma --> Pasé todo a formato 1250.43, pero sin éxito tampoco :-(((((((


Los medios que uso:
- Última versión de Acrobat Pro
- Windows 11 en un ordenador HP de menos de 18 meses (aún lo estoy pagando hasta febrero :-D)
- Nivel absolutamente nulo en Javascript, pero recurso infinito a ChatGPT4.

Gracias de antemano, pierna, brazo, cedentes etc. 😉

This topic has been closed for replies.
Correct answer try67

You should spend some time studying JS, then, because you're not using the correct operators.

There's no "^" operator in JS, for example. To do powers you need to use Math.pow(a,b), which will return a to the power of b.

1 reply

try67
Community Expert
try67Community ExpertCorrect answer
Community Expert
October 30, 2023

You should spend some time studying JS, then, because you're not using the correct operators.

There's no "^" operator in JS, for example. To do powers you need to use Math.pow(a,b), which will return a to the power of b.

Participant
November 7, 2023

En primer lugar, gracias de nuevo @try67 ya que es la segunda vez que me resuelves algo sobre formularios PDF y JavaScript.

En cuanto a estudiar JS, tienes razón... Pero no tenía tiempo porque tenía que tener listos 4 formularios con 31 campos cada uno para ayer lunes:

  • 12 campos con datos numéricos diferentes en cada formulario
  • 2 de entrada de dato para el cliente
  • 16 campos calculados con formulas complejas
  • 1 botón de acción.

Así que, al no haber hecho un formulario ni usado JS en mi vida, no me quedó más remedio que tirar al máximo de ChatGPT 4, y de esta comunidad en 2 ocasiones. El resultado es que he hecho en 1 semana lo que tú habrías hecho en apenas unas pocas horas. Ahora bien, el último formulario con campos cálculados, lo hice en menos de 1 hora.

Es que así aprendí lo que sé en general y de informática en particular, salvo que ahora con ChatGPT 4 (o Perplexity, o ...), tardas 50 veces menos que antes con el "Don't be evil".

Igual, de ahora en adelante, podremos, en lugar de GIYF, contestar PIYF/OIAIYF/... a las preguntas tontas 😄