Mostrar/ocultar un campo en un Estado - ACCESO
Jeen
-
Jeen -
Jeen -
Hola,
Vamos, cuando genero un estado, desearía que los campos en blanco no se muestren. Soy principiante en escritura de código... pero esto es lo que he probado:
Private Sub TOTAL_FRAIS_BeforeUpdate(Cancel As Integer)
If IsNull(Me.TOTAL_FRAIS.Value) Then
Me.Étiquette32.Visible = False
Me.TRANSPORT_ALLER.Visible = False
Me.Étiquette33.Visible = False
Me.TRANSPORT_RETOUR.Visible = False
Me.Étiquette34.Visible = False
Me.TOTAL_TRANSPORT.Visible = False
Me.Étiquette42.Visible = False
Me.Étiquette44.Visible = False
Me.Étiquette35.Visible = False
Me.NOMBRE_DE_REPAS.Visible = False
Me.Étiquette36.Visible = False
Me.PRIX_PAR_REPAS.Visible = False
Me.Étiquette37.Visible = False
Me.TOTAL_REPAS.Visible = False
Me.Étiquette43.Visible = False
Me.Étiquette38.Visite = False
Me.NOMBRE_DE_NUIT.Visible = False
Me.Étiquette39.Visible = False
Me.PRIX_HOTEL.Visible = False
Me.Etiquette40.Visible = False
Me.TOTAL_HEBERGEMENT.Visible = False
Me.Etiquette41.Visible = False
Me.TOTAL_FRAIS.Visible = False
Me.Etiquette31.Visible = False
End If
End Sub
Por pura casualidad, ¿podría ayudarme diciéndome qué no está bien?
¡MUCHAS GRACIAS!
Configuración: Windows 7 / Firefox 5.0
Vamos, cuando genero un estado, desearía que los campos en blanco no se muestren. Soy principiante en escritura de código... pero esto es lo que he probado:
Private Sub TOTAL_FRAIS_BeforeUpdate(Cancel As Integer)
If IsNull(Me.TOTAL_FRAIS.Value) Then
Me.Étiquette32.Visible = False
Me.TRANSPORT_ALLER.Visible = False
Me.Étiquette33.Visible = False
Me.TRANSPORT_RETOUR.Visible = False
Me.Étiquette34.Visible = False
Me.TOTAL_TRANSPORT.Visible = False
Me.Étiquette42.Visible = False
Me.Étiquette44.Visible = False
Me.Étiquette35.Visible = False
Me.NOMBRE_DE_REPAS.Visible = False
Me.Étiquette36.Visible = False
Me.PRIX_PAR_REPAS.Visible = False
Me.Étiquette37.Visible = False
Me.TOTAL_REPAS.Visible = False
Me.Étiquette43.Visible = False
Me.Étiquette38.Visite = False
Me.NOMBRE_DE_NUIT.Visible = False
Me.Étiquette39.Visible = False
Me.PRIX_HOTEL.Visible = False
Me.Etiquette40.Visible = False
Me.TOTAL_HEBERGEMENT.Visible = False
Me.Etiquette41.Visible = False
Me.TOTAL_FRAIS.Visible = False
Me.Etiquette31.Visible = False
End If
End Sub
Por pura casualidad, ¿podría ayudarme diciéndome qué no está bien?
¡MUCHAS GRACIAS!
Configuración: Windows 7 / Firefox 5.0
7 respuestas
-
Hola JEEN,
La solución se encuentra del lado de la función Verdadero/Falso.
Aquí un espécimen como ejemplo:
=VerdaderoFalso([RéfOpération]=1;"Montant brut de la vente";VerdaderoFalso([RéfOpération]=2;"Montant brut de la vente";"¡Error!" ))
NB: Esta función suele documentarse con el equivalente en inglés: IIF
Lo encontrarás fácilmente en Google
Ver también el sitio de referencia: http://access.developpez.com/cours/
***
Cordialement
La ciencia no hace más que encontrar lo que ha existido desde siempre.
REEVES Hubert. -
Muchas gracias por este enlace. ¡Me es muy útil! Sobre todo para entender el código VBA.
Sin embargo, no logro hacer la conexión entre la función VerdaderoFalso y que no aparezcan mis campos ...
VerdaderoFalso([ChampX]=0; me.[campoY].visible=false;me.[campoY].visible=true) ? -
Buenas noches Jeen,
Al activar la tecla F1, obtendrás la ayuda en línea.
Escribe: IIF en el campo de búsqueda intuitiva.
NB: " " equivale a -> No mostrar
No olvides empezar con el signo = (como en EXCEL)
Saludos
***
La ciencia solo encuentra lo que siempre ha existido.
REEVES hUBERT. -
Hola Jean Jacques,
Gracias por todos tus valiosos consejos. ¡Ayuda mucho!
Solo que, perdón por abusar de nuevo, pero tengo otro problema...
Cuando mi función se expresa como abajo tengo un mensaje de error: "Problema de compilación - Se esperaba: número de línea o etiqueta o instrucciones o fin de instrucciones" al seleccionar el primer signo "="
⇒ =IIf("TRANSPORT_ALLER=0", "", [TRANSPORT_ALLER])
Cuando pongo esa misma función sin el primer signo "=", tengo un mensaje de error: "Problema de compilación - Se esperaba: ="
He probado varias sintaxis, he buscado en la ayuda, en Internet y no encuentro la respuesta a mi problema. He intentado incluir "Private sub... End sub" pero no funciona.
¡Otra vez gracias!!! -
Mis disculpas, Jeen. Al releerlo cuidadosamente, me doy cuenta de que me equivoqué. En tu primer post estabas a un paso de la solución. De hecho, en tu evento de Apertura (si es que he entendido bien esta vez) conviene repetir la sintaxis if/endif como sigue:
Private Sub Report_Open(Cancel As Integer)
If IsNull(Me.<nombre_del_campo>) Then
Etiqueta29.Visible = False
End If
DoCmd.Maximize
End Sub
Lo siento por haber hecho perder el tiempo. Nos vemos.</nombre_del_campo>-
-
Gracias. Pero tengo un problema de referencia circular, y si cambio el nombre del control como sugiere, me aparece un mensaje “#Error” en mi Estado...
Y por cierto me preguntaba, ¿cómo puedo hacer el mismo procedimiento que ustedes hacen con las Etiquetas, porque en la pestaña de datos no tengo fuente de control sino solo etiquetas activas. no puedo introducir expresiones.
Gracias de nuevo
-
-
¡Gracias por su ayuda!
He hecho exactamente lo que me dijo. Pero los campos vacíos de mi Estado siguen visibles. Creo que es mi archivo el que podría tener un problema. Después de varios intentos distintos, no funciona. El único cambio que hice en el código que me proporcionó fue reemplazar "IsNull" por "IsEmpty"...
¡Gracias de nuevo por su tiempo! -
Bonsoir Jeen,
El tema del ocultamiento de campos se trata en este enlace.
Te dejo que lo descubras:
http://www.vbfrance.com/forum/sujet-CACHER-CHAMP-DANS-ETAT-ACCESS-QD-CELUI-CI_719208.aspx
La solución propuesta:
If Not IsNull(Me.Controls("NomduContrôle").value) Then
Me.Controls("NomduContrôle").Visible = True
Me.Controls("Étiquette_Contrôle").Visible = True
Else:
Me.Controls("NomduContrôle").Visible = False
Me.Controls("Étiquette_Contrôle").Visible = False
End If-
-
Gracias.
También encontré este foro. Lo intenté de nuevo, una vez ocultando por defecto mis campos y la otra haciendo If ...then ...else ...End If. En ambos casos, no funciona. Creo que los códigos simplemente no tienen impacto en mi estado. Estoy prácticamente segura de haberlo hecho correctamente. He hecho varias pruebas, nada funciona.
En cualquier caso, muchas gracias por su ayuda !!!
Private Sub Report_Activate()
If Not IsNull(Me.Controls(TOTAL_FRAIS).Value) Then
Me.Controls(TRANSPORT_ALLER).Visible = True
Me.Controls(Etiquette32).Visible = True
End If
End Sub
-