Dudas respecto a ecuaciones y SIinm en Access 2007

En el formulario que estoy creando, tengo un parámetro que calcular que cumple con 3 condidiones:

1era

Esta condición es el valor por defecto

2da

Condición respecto a temperatura ambiente

3era

Temperatura dentro del empaque

La ecuación por defecto es la siguiente:

pto =2.718^((-[Activation_Energy_Operating].[Valor]/0.00008617)*((1/([combTAO].[Valor]+[TR_Default].[Valor]+273))-1/298)

Esta ecuación no depende de cuadro combinado, su valor es por defecto, está asociado al tiempo de componente que seleccione en el cuadro combinado cmb_part_type

Bajo condiciones ambientales:

pto =2.718^((-[Activation_Energy_Operating].[Valor]/0.00008617)*((1/([combTAO].[Valor]+[cmb_JA].[Valor]+273))-1/298))

Esta ecuación depende del cuadro combinado:TR_Using_Ambient_Temperature

Bajo condiciones de temperatura dentro del empaque:

pto =2.718^((-[Activation_Energy_Operating].[Valor]/0.00008617)*((1/([TR_Using_External_Case_Or_Package_Temperature].[Valor]+[cmb_JC].[Valor]+273))-1/298))

Esta ecuación depende del cuadro combinado:TR_Using_External_Case_Or_Package_Temperature

Mi pregunta es la siguiente, como hago para crear una ecuación única en un cuadro de texto que incluya las tres condiciones dependiendo de los cuadros combinados que seleccione, ¿ya qué los mismos son los que me generan las condiciones 2da y 3ra?

1 Respuesta

Respuesta
1

Respondida en otro hilo

:-)

Hola Amteipel,

me he basado en lo que me aconsejaste sobre las ecuaciones usando SiInm, pero tengo una duda que ya no se como resolver... Me explico, He creado las condiciones para los diversos casos de los cuadros de texto dependientes de los cuadros combinados, pero las mismas no funcionan estando juntas en el mismo cuadro de texto, si las pongo por separado funcionan, solo que es para una condición, no para las dos..

Ecuaciones:

SiInm(EsNulo
([TR_Using_Ambient_Temperature ]), 2.718^((-[Activation_Energy_Operating].[Valor]/0.00008617)*((1/([combTAO].[Valor]+[TR_Default].[Valor]+273))-1/298)), 2.718^((-[Activation_Energy_Operating].[Valor]/0.00008617)*((1/([combTAO].[Valor]+[cmb_JA].[Valor]+273))-1/298))


SiInm(EsNulo
([TR_Using_External_Case_Or_Package_Temperature]),
2.718^((-[Activation_Energy_Operating].[Valor]/0.00008617)*((1/([combTAO].[Valor]+[TR_Default].[Valor]+273))-1/298)),2.718^((-[Activation_Energy_Operating].[Valor]/0.00008617)*((1/([TR_Using_External_Case_Or_Package_Temperature].[Valor]+[cmb_JC].[Valor]+273))-1/298))

El error que me genera es el siguiente:

la expresión que ha especificado contiene una función con un número incorrecto de argumentos, y he hecho las pruebas por separado como te comenté anteriormente y funcionan cada una de maravilla...

Me podrías decir en que estoy fallando esta vez?

Muchísimas gracias y perdona la molestia.

Héctor

La verdad es que me resulta complicado hacerme una idea de lo que estás haciendo.

Dices que tienes las condiciones por separado y funcionan, pero cuando las juntas, dejan de funcionar. El error que describes se debe a la llamada a una función que requiere cierto número de parámetros, pero que por error le pasas más o menos de los que espera. Asumo que la función que se queja es el SiInm (porque no veo que uses ninguna otra).

Olvidemos tu caso concreto, porque no tiene sentido complicarnos con tanto coeficiente numérico, decenas de paréntesis y operaciones de cálculo.

Te explico con un caso muy simple y después, cuando lo hayas entendido, lo aplicas al tuyo.

Si no voy mal encaminado, quieres hacer un cálculo en una caja de texto, que depende de valores de una selección en otras partes del formulario (unos desplegables o lo que sea)

Viene a ser algo así (y vamos de sencillo a complicado)

- Si em el desplegable1 selecciono "A", la fórmula a aplicar es "1"

- Si en el desplegable1 selecciono "B", la fórmula a aplicar es "2"

(Donde X e Y pueden ser valores de otros campos del formulario o de la base de datos)

Lo resolverías poniendo en tu caja de texto:

= SiInm([desplegable1] = "A", 1, 2)

Sencillo, ¿no?

Si ahora lo complicas más, porque puede depender del desplegable1 y del desplegable2, tendrás que complicar la condición encadenando más SiInm.

Si, por ejemplo, tu caso es:

- Si em el desplegable1 selecciono "A", la fórmula a aplicar es "1"
- Si en el desplegable1 selecciono "B", y en el desplegable2 selecciono "C" la fórmula a aplicar es "2"

- Si en el desplegable1 selecciono "B", y en el desplegable2 selecciono "D" la fórmula a aplicar es "3"

Tendrías que encadenar 2 SiInm de la siguiente forma:

= SiInm([desplegable1] = "A", 1, SiInm([desplegable2] = "C"; 2, 3))

Y así sucesivamente...

Si te fijas, la función SiInm siempre recibe 3 parámetros:

- Condición

- Resultado si condición es verdadera

- Resultado si condición es falsa

Hola amteipel

Gracias por tan pronta respuesta, me he explicado muy mal perdona... Los valores de los cuadros combinados son números, no son nombres definidos, si fuese así tu ecuación me vendría de maravilla, lo que quiero decir, es que el valor de un cuadro de texto se ve afectado cuando selecciono el valor de un cuadro combinado, y creo que la mejor opción es indicándole lo siguiente:

Supongamos que tenemos tres cuadros combinados A, B y C, todos ellos tienen valores solo numéricos que pueden ser desde -70 hasta cero y de ahí hasta +100, y tenemos un cuadro de texto T que depende de ellos 3

Imaginemos que las ecuaciones son las siguientes:

T dependiente de A

T= 23*A

T dependiente de B

T= 15*B

T dependiente de C

T=18*C

Ahora bien, mi idea es la siguiente:

Si A y B son nulos, mostrar valor de C

Si A y C son nulos, mostrar valor de B

Si B y C son nulos mostrar valor de A

Esto es lo que he pensado yo, pero no me funciona, supongo que creo valores redundantes que no me dejan que funcione, vamos, que está completamente mal...

=SiInm(No EsNulo[A], <T=23*A>,SiInm(Esnulo [A],<T=15*B>,<T=18*C>,))


Me podrías dar una sugerencia de como resolverlo?

Muchísimas gracias Amteipel

Héctor!

Extraído de tu mensaje:

Si A y B son nulos, mostrar valor de C
Si A y C son nulos, mostrar valor de B
Si B y C son nulos mostrar valor de A

=SiInm(No EsNulo[A], <T=23*A>,SiInm(Esnulo [A],<T=15*B>,<T=18*C>,))

1) La fórmula no refleja exactamente el enunciado. No es la "traducción" de tus condiciones.

2) La fórmula está mal escrita. Por una parte, sobra la coma del final. Si te fijas, el segundo SiInm tiene 3 comas, que servirían para separar 4 parámetros. La función SÓLO acepta 3.

3) Tal como la formulas, no tiene sentido. Si te fijas, es redundante e inútil. Leámosla:

=SiInm(No EsNulo[A], xxx ,SiInm(Esnulo [A], yyy, zzz)

En el primer SiInm, la condición es que A no sea nulo. Si no es nulo, se aplicará lo que escribas en xxx. Hasta ahí, bien.

En caso contrario (es decir, si A es nulo) entra a trabajar el segundo SiInm. ¿Por qué la condición que le pones es, entonces, que A sea nulo? SI YA LO ES! (Si no lo fuera no estarías analizando el segundo SiInm, porque estarías usando xxx.

Hola amteipel,

Te envío lo que yo quiero hacer, pero se me hace complicado la parte final de la condición, no se como plantearlo... Alguna sugerencia??

Ecuaciones propuestas:

=SiInm(EsNulo([A] y ), <T=18*C>, <Condición?>)

=SiInm(EsNulo([A] y [C]), <T=15*B>, <Condición?>)

=SiInm(EsNulo( y [C]), <T=23*A>, <Condición?>)

Es posible hacer esas uniones con Y, lo he intentado y me da error de sintaxis, vamos, que he vuelto a meter la pata!

La verdad que no se como hacerlo, se me hace un lío, me pierdo en lo que me dices...

Muchísimas gracias por tu ayuda!


Héctor


Intentemos aclarar de una vez por todas los conceptos de SiInm.

SiInm es una función. Como tal, devuelve un resultado. El resultado que devuelve DEPENDE de 3 parámetros que recibe. En concreto:

- Parámetro 1: Condición lógica que debe evaluarse. Al tratarse de una condición lógica, funciona como cualquier condición lógica (obviamente). Es decir, se puede construir como combinación de condiciones con OR, AND, NOT, ...

En tu caso, las combinaciones serían del tipo:

EsNulo(A) Y EsNulo(B)

- Parámetro 2: Resultado (no condición) que devolverá la función cuando la condición lógica del parámetro 1 sea verdadera

- Parámetro 3: Resultado (no condición) que devolverá la función cuando la condición lógica del parámetro 1 sea falsa

Tanto parámetro 2 como parámetro 3, a su vez podrían ser una nueva llamada a la función SiInm, porque, como digo al principio, SiInm es una función que devuelve un resultado. Por tanto, si en parámetro 3 pones una segunda llamada a SiInm, se analizará la condición que le pongas en su primer parámetro y devolverá su propio parámetro 2 o 3 en función de dicha condición.

Ahora te recomiendo que escribas los posibles valores de A, B, C (tanto nulos como no nulos) y los correspondientes valores que deberías obtener del cálculo en cada uno de esas posibles combinaciones de A, B y C.

Será la única manera de ver cómo deben construirse los SiInm para contemplar todas las posibilidades.

Muchas gracias por tu ayuda amteipel, por ahora no me funciona, esperemos que lo pueda hacer funcionar.

Muchísimas Gracias!

Saludos

Héctor!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas