El otro día me salvaron en como eligiendo una opción de un cuadro combinado se ocultaban las etiquetas, lo que necesito ahora es similar Como ocultar una etiqueta según el resultado que se obtiene en otra etiqueta Detallo: La etiqueta "P10" tiene un calculo [p1] + [p3] ese resultado es en porcentaje Por otro lado la etiqueta "imagen1" se tiene que ocultar si el valor de "P10" es menor que 60%
Respuesta de dayvitt
1
1
dayvitt, Soy: Programador-analista de aplicaciones en Lenguaje C...
Bien, Ve "al perder enfoque" de P3 y ponle código. If P1+P3 <60 then imagen1.visible=False else imagen1.visible=true end if
La fórmula funciona perfectamente, pero no la puedo aplicar por los siguiente, El resultado de la etiqueta "p3", se actualiza a medida que se llena una grilla de preguntas, probé con afterUpdate pero me tira un error creo que se debe por que en "p3" cuando se inicia la grilla no tiene ningún valor, ¿cómo puedo corregirlo?
Modifica el código por este DoCmd. DoMenuItem acFormBar, acRecordsMenu, 5,, acMenuVer70 If P1+P3 <60 then imagen1.visible=False else imagen1.visible=true end if
El código que me indicas funciona, provisionalmente agregue un botón para que muestre la imagen que corresponde, se puede ver como se modifica es decir se oculta o se muestra la imagen a medida que se cargan los datos en la grilla, es decir cuando se actualizar la etiqueta "p3" ya que esta seria el objetivo, Después de esta prometo no molestar más
Con la instrucción: DoCmd. DoMenuItem acFormBar, acRecordsMenu, 5,, acMenuVer70 Fuerzas una actualización, puedes ponerla "al perder enfoque" de cualquier textbox que necesites que actualice luego.
Funciona perfecto, gracias, ahora te hago una pequeña consulta, tengo la siguiente fórmula TOTAL1 = [ACIERTOS1] / [INTENTOS1] El problema es cuando en intentos da como resultado 0 o Nulo lo cual arroja un error, probé solucionarlo con TOTAL1 = siInm(([INTENTOS1] > 0), ([ACIERTOS1] / [INTENTOS1]), "0") ¿Pero no lo soluciona que estoy haciendo mal?
La fórmula donde la tienes, ¿en el formulario o en código VB?
En codigo VB
Quítale las comillas al cero
Buenas Te comento les quite las comillas pero sigo con el mismo problema, te detallo un poco más, tengo una grilla en la cual en cada pregunta tiene la opción de tres respuestas "si" "no" "n/a", a medida que se actualiza la carga de ellas se genera un calculo los "si" sobre los "si" + "no" "(aciertos) /( Intentos)", te dejo el código completo, donde se ven V1B, v2B, etc, son las opciones elegidas de cada pregunta, luego se multiplica por un peso que tiene cada una de ellas ya que todas las preguntas no tienen la misma importancia, todo sale perfecto mientras se usen "si" o "no" en las opciones, el problema son los "N/A" solo cuando es en la primer pregunta que se utiliza, si se utiliza desde la segunda pregunta no hay problema. Creo que el problema corresponde por que queda 0 / 0 y lógicamente da error, el error me lo marca justamente en el calculo de Total1 donde se aplica "aciertos" sobre "intentos", que me recomendás para corregirlo Sub PUNT() Dim V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, INTENTOS1, ACIERTOS1, TOTAL1 As Double ACIERTOS1 = 0# 'Aciertos "SI" If V1B.Value = "SI" Then V1 = 1 * Peso1.Value End If If V2B.Value = "SI" Then V2 = 1 * peso2.Value End If If V3B.Value = "SI" Then V3 = 1 * peso3.Value End If If V4B.Value = "SI" Then V4 = 1 * peso4.Value End If If V5B.Value = "SI" Then V5 = 1 * peso5.Value End If If V6B.Value = "SI" Then V6 = 1 * peso6.Value End If If V7B.Value = "SI" Then V7 = 1 * peso7.Value End If If V8B.Value = "SI" Then V8 = 1 * peso8.Value End If ACIERTOS1 = CDbl(V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8) P2.Value = ACIERTOS1 INTENTOS1 = 0# If V1B.Value = "NO" Then V9 = 1 * Peso1.Value End If If V2B.Value = "NO" Then V10 = 1 * peso2.Value End If If V3B.Value = "NO" Then V11 = 1 * peso3.Value End If If V4B.Value = "NO" Then V12 = 1 * peso4.Value End If If V5B.Value = "NO" Then V13 = 1 * peso5.Value End If If V6B.Value = "NO" Then V14 = 1 * peso6.Value End If If V7B.Value = "NO" Then V15 = 1 * peso7.Value End If If V8B.Value = "NO" Then V16 = 1 * peso8.Value End If INTENTOS1 = CDbl(V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8 + V9 + V10 + V11 + V12 + V13 + V14 + V15 + V16) P3.Value = INTENTOS1 TOTAL1 = IIf(([INTENTOS1] = 0), 0, ([ACIERTOS1] / [INTENTOS1])) 'TOTAL1 = [ACIERTOS1] / [INTENTOS1] P1.Value = TOTAL1 End Sub
Bien, Sustituye Total1 = IIf(([Intentos1] = 0), 0, ([Aciertos1] / [Intentos1])) Por If [Intentos1]=0 then Total1 = [Aciertos1] / [Intentos1] Else Total1 = 0 End If